ServletContext, 此接口是WEBAPP的上下文.代表当前web应用.
1.servlet容器启动时,会为每个webAPP创建一个servletContext.
2.ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
3.由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
多个Servlet通过ServletContext对象实现数据共享。
在InitServlet的Service方法中利用ServletContext对象存入需要共享的数据
/*获取ServletContext对象*/
ServletContext context = this.getServletContext();
//存入共享的数据
context.setAttribute("name", "haha");
在其它的Servlet中利用ServletContext对象获取共享的数据
/*获取ServletContext对象*/
ServletContext context = this.getServletContext();
//获取共享的数据
String name = context.getAttribute("name");
System.out.println("共享的内容值是:"+name);
4.获取WEB应用的初始化参数。
<web-app>
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/4g</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>1314qr</param-value>
</context-param>
<context-param>
<param-name>user</param-name>
<param-value>root</param-value>
</context-param>
</web-app>
5.对Distributed的Web Application来说,每个JVM下的Web Application都有一个独立的ServletContext,因而ServletContext不可以作为全局信息存储的地方,因而它并没有分布式信息同步的功能,即它只是本地的ServletContext。在Servlet中,使用ServletConfig实例可以获取ServletContext实例。
/*****************************************************************************************/
以下为该接口的重要方法.
1. // 通过给定一个Context Path以在当前Servlet Container中找到其对应的ServletContext实例。
// 可以通过该方法获取Servlet Container中定义的另一个Web Application的ServletContext实例,并获得其RequestDispatcher,并将当前请求Dispatch到那个Web Application中做进一步的处理。这里的uripath必须以"/"开头,且其路径相对于当前Server的根路径。出于安全考虑,该方法可能会返回null。// 在Jetty的实现中,这里uripath可以是一个具体的路径,并且支持查找最准确的匹配。如:对uripath为/foo/goo/abc.html,在Server中由以下Context Path定义:"/", "/foo", "/foo/goo",则最终查找到的ServletContext为"/foo/goo"作为Context Path对应的ServletContext实例。
public ServletContext getContext(String uripath); 查看详细在此 http://www.blogjava.net/DLevin/archive/2014/05/11/413395.html