Servlet笔记——(2.4) ServletContext(重要)

来源:互联网 发布:淘宝寄到日本 编辑:程序博客网 时间:2024/06/07 14:04

服务器会为每个应用创建一个ServletContext对象,该对象被包含在ServletConfig对象中。ServletContext对象的创建是在服务器启动时完成的;销毁是在服务器关闭时完成的。

ServletContext对象的作用是在整个Web应用的动态资源之间共享数据。例如在AServlet中向ServletContext对象中保存一个值,然后在BServlet中就可以获取整个值,这就是共享数据了。

接口ServletContext的定义可参考“JSP内置对象之 application”对象,“application”对象的原型即实现了该接口。



2.4.1 获取ServletContext实例

(1) 在void init(ServletConfig config)中:ServletContext context = config.getServletContext();ServletConfig接口的getServletContext()方法可以用来获取ServletContext对象。

(2) GenericServlet类继承并重写了getServletContext()方法,所以可以直接使用this.getServletContext()来获取。


(1) ServletConifg#getServletContext()

(2) GenericServlet#getServletContext()

(3) HttpSession#getServletContext()

(4) ServletContextEvent#getServletContext()




具体代码如下:

public class AServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/* * 1.获取ServletContext对象 * 2.验证ServletContext对象只有一份 * */// AServlet - HttpServlet - GenericServlet - Servlet + ServletConfig//ServletConfig config = this.getServletConfig();//ServletContext context = config.getServletContext();ServletContext application = this.getServletContext();System.out.println("AServlet: " + application);}
public class DServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("DServlet: " + this.getServletContext());}

分别访问AServlet和DServlet,观察结果,得到的ServletContext是同一个对象:

org.apache.catalina.core.ApplicationContextFacade@2ab44e2d

org.apache.catalina.core.ApplicationContextFacade@2ab44e2d



原创粉丝点击