每个应用都会有一个ServletContext对象与之关联,当容器分布在在多个虚拟机上时,web应用在所分布的每个虚拟机上都拥有一个ServletContext实例.缺省情况下,ServletContext不是分布式的,并且只存在于一个虚拟机上。
通过ServletContext可以访问应用范围的初始化参数和属性
1).初始化参数
ServletContext对象是在Web应用程序装载时初始化的。正像Servlet具有初始化参数一样,ServletContext也有初始化参数。Servlet上下文初始化参数指定应用程序范围内的信息。[1]
在web.xml中配置初始化参数:
<context-param>
<param-name>adminEmail</param-name>
<param-value>webmaster</param-value>
<context-param>
从Servlet中访问初始化参数:
ServletContext application=this.getServletContext();
out.println("send us your")
out.println(application.getInitParameter("email"));
out.println("'>email");
2).属性
可以通过编程的方式绑定,也可以作为web应用的全局变量被所有Servlet和JSPs访问
设置Context属性:
ServletContext application=this.getServletContext();
application.setAttribute("person1",new Person("Jim"));
application.setAttribute("person2",new Person("Green"));
获取Context属性:
ServletContext application=this.getServletContext();
Enumberation persons=application.getAttributeNames();
while(persons.hasMoreElements()){
String name=(String)persons.nextElement();
Person p=(Person)persons.getAttribute(name);
application.removeAttribute(name);
ServletContext的用途
安装方法:
安 装在一个服务器中的一个特定URL名字空间(比如,/myapplication)下的所有Servlet,JSP,JavaBean等Web部件的集合 构成了一个Web的应用,每一个Web应用(同一JVM),容器都会有一个背景对象,而javax.servlet.ServletContext接口就 提供了访问这个背景对象的途径。
Servlet实例的getServletContext方法:
得 到该Servlet运行其中的这个背景对象。从这个背景对象中你可以访问如下信息或资源:(注意该方法不是ServletContext的方法而是获取背 景对象的方法由于HttpServlet继承Servlet的关系GenericServlet类和HttpServlet类同时具有该方法):初始化参 数 ServletContext.getInitParameter(String name)。存储在背境中的对象 context.getAttribute(String name) 与本背景关联的资源 ServletContext.getResource(String path) 日志 ServletContext.log(String msg) 以上所示方法均为ServletContext所提供,值得一提的是对于存储在背境中的对象访问方法常用的还有: context.setAttribute(String name, Object object);将特定名字绑定的任意类型的对象上。将把object对象绑定到名字name,存放在Servlet背景中,可供同一背景中的其他 Servlet共享。其他Servlet可以通过context.getAttribute(String name),得到一个背景中的对象,或通过context.removeAttribute(String name)在背景中移除一个对象。
在Web应用范围内存取共享数据的方法:
setAttribute(String name,java.lang.Objectobject):把一个java 对象和一个属性名绑定,并存放到ServletContext 中,参数name 指定属性名,参数Object 表示共享数据。
getAttribute(String name):根据参数给定的属性名,返回一个Object类型的对象。
getAttributeNames():返回一个Enumeration 对象,该对象包含了所有存放在ServletContext 中的属性名
removeAttribute(String name) : 根 据 参 数 指 定 的 属 性 名 , 从servletContext 对象中删除匹配的属性。
此功能可以用来计算浏览量
getRealPath("/"):得到绝对路径
访问web应用的静态资源
使用ServletContext接口可以直接访问web应用中的静态内容文档结构.包括HTML,GIF和JPEG文件。如以下方法:
.getResource
.getResourceAsStream
这两个方法的参数都是以"/"开头的字符串,表示资源相对于context根的相对路径.文档结构可以存在于服务器文件系统,或是war包中,或是在远程服务器上,抑或其他位置.不可以用来获得动态资源,比如,getResource("/index.jsp"),这个方法将返回该jsp文件的源码,而不是动态页面.可以用"Dispatching Requests"获得动态内容.
列出web应用中可被访问的资源,可以使用getResourcePaths(String path)方法。
跨多个请求,用户和Servlets
web服务器支持在一台机器上共享一个IP的多个逻辑主机,这种能力被称为"虚拟主机",每个逻辑主机都拥有它自己的servlet context。servlet context不能跨虚拟主机共享。
转自http://baike.baidu.com/view/3923348.htm
相关推荐
在 Servlet 编程中,ServletConfig 和 ServletContext 两个对象经常被混淆,然而它们有着截然不同的作用域和用途。 首先, lets 看看 ServletConfig 对象。ServletConfig 对象是 Servlet 的配置对象,用于存储 ...
4.3 ServletContext作用 ServletContext可以用来存储全局变量、监听事件、初始化参数等,它在整个Web应用的生命周期内有效。 4.4 ServletContext特点 - 跨Servlet通信 - 存储全局数据 - 初始化参数 - 监听器注册 ...
10. **ServletContext作用域**:除了Session,JSP还有其他作用域,如Page、Request和ServletContext。ServletContext在整个Web应用中有效,适合存储全局配置信息。 以上就是关于JSP与Web状态管理的一些关键知识点,...
1. **ServletContext的生命周期与作用** - 当Tomcat或其他Web服务器启动并加载Web应用时,会为该应用创建一个唯一的`ServletContext`实例。这个实例在Web应用的整个生命周期内都是存在的,直到Web应用被卸载。 - `...
- **Application**:也称为ServletContext作用域,存储在此处的数据在整个应用生命周期内都是可见的,除非应用重启。 - **答案解析**:题目要求在多个页面间共享数据,因此应选择`request`和`session`作用域。因为`...
#### 二、`ServletContext`的作用 `ServletContext`接口提供了多种方法,用于在Web应用范围内存取共享数据、访问当前Web应用的资源、获取Servlet容器的相关信息等。 ##### 1. 存取共享数据的方法 - **`...
#### 二、ServletContext的作用 1. **数据共享**:`ServletContext`可以被Web应用中的所有Servlet实例共享,这样就可以通过它来存储一些全局性的数据,便于各个Servlet之间进行数据传递和共享。 2. **获取初始化...
ServletContext 对象有很多重要的作用,包括: 1. 获取 Web 应用程序中任何资源的绝对路径:`String path = context.getRealPath("相对于该 web 应用的相对地址");` 2. 作为一个域对象(存储数据的区域):...
这些对象在Servlet编程中起到关键作用,帮助开发者在不同范围内存储和共享数据。 1. HttpServletRequest对象: Request对象代表客户端的HTTP请求,用于获取请求参数、请求头、请求路径等信息。通过`request....
JavaWeb新版教程Servlet-1vlet-ServletContext对象作用的演示.avi
作用域:整个项目 生命周期:服务器启动到服务器关闭 如何使用: 三种创建方式: ServletContext sc=this.getServletContext(); ServletContext sc1=this.getServletConfig().getServletContext(); ServletContext ...
* Application 作用域是通过 ServletContext 接口实现的 * Application 作用域的信息共享是通过 setAttribute 和 getAttribute 方法来实现的 * Application 作用域的信息在应用程序停止后无效 作用域的概念: * ...
首先,让我们来了解一下ServletContext的作用。在web.xml文件中,我们可以使用标签来配置初始化参数,这些参数可以在Servlet程序中通过ServletContext对象来获取。在ServletConfig对象中,getInitParameter(String ...
web.xml中等配置的作用 了解 web.xml 的配置信息和加载顺序对于理解框架的流程至关重要。在 web.xml 中,<context-param> 配置起着非常重要的作用,它在 web 项目启动时发挥着关键的作用。 首先,让我们来了解一下...
- `application` 对象是 `javax.servlet.ServletContext` 类型,它在整个Web应用程序的生命周期内都有效。这意味着无论哪个用户、哪个会话,只要应用运行,设置在application作用域内的属性都能访问。 JSP内置对象...
存放在ServletContext对象中。它的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。例如,在index.jsp页面中设置一个变量,然后在整个应用程序中都可以访问这个变量。 使用jsp的四个作用域需要根据实际...
5. **Application作用域**:这个作用域的Bean在`ServletContext`的生命周期内存在,也就是说,它们在整个Web应用程序中只存在一个实例。这些Bean适用于需要跨多个用户会话共享数据的情况,例如,全局的配置信息或...
Application 对象是javax.servlet.ServletContext类型,“Application”对象负责提供应用程序在服务器运行中的一些全局信息,常用的方法有getMimeType和getRealPath等,servlet的循环通过调用getServletConfig()....
它的作用域覆盖整个Web应用,所以任何在`ServletContext`中存储的信息对所有用户和Servlet都是可见的。 2. **共享数据**: 在`ServletContextDemo`中,可能会有一个Servlet或JSP用于设置累加数据,而其他Servlet或...
这里主要涉及四个核心的内置对象:PageContext、HttpServletRequest、HttpSession和ServletContext,它们各自对应于四种不同的作用域。 1. PageContext对象:PageContext是JSP页面内部的数据存储区,它的生命周期仅...