安装在一个服务器中的一个特定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)在背景中移除一个对象。
ServletContext对象是由谁创建的?
由Servlet容器负责创建,对于每个JavaWeb应用,在启动时,Servlet容器都会创建一个ServletContext对象
一. WEB容器启动时候 它会为每个web应用程序创建一个ServletContext对象 它代表当前web应用。
二. servletContext对象的获取:
1. ServletContext对象被包含在ServletConfig对象中 所以可以通过ServletConfig 对象调用ServletConfig.getServletContext()获得对ServletContext对象的引用。
2.在继承了HttpServlet对象的类中 可以通过this.getServletContext来获取。
三:由于一个web应用中的所有servlet共享一个ServletContext对象 所以可以通过ServletContext对象来实现Servlet之间的通讯。
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- ServletContext context=this.getServletContext();
- context.setAttribute("data", "hello jsp");
- RequestDispatcher rd=context.getRequestDispatcher("/index.jsp");
- rd.forward(request, response);
- }
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext context=this.getServletContext();
context.setAttribute("data", "hello jsp");
RequestDispatcher rd=context.getRequestDispatcher("/index.jsp");
rd.forward(request, response);
}
- <body>
- <%=application.getAttribute("data") %>
- </body>
<body>
<%=application.getAttribute("data") %>
</body>
来源:http://hi.baidu.com/jlhaoran/blog/item/7c74d1128e7ba30c203f2e2b.html