servlet中this.getServletContext(); this.getServletConfig().getServletContext(); 的区别

时间:2023-03-10 04:06:44
servlet中this.getServletContext(); this.getServletConfig().getServletContext(); 的区别

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

Servlet1:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String data = "value";
        ServletContext context = this.getServletConfig().getServletContext();//获得ServletContext对象
        context.setAttribute("data", data);  //将data存储到ServletContext对象中
    }

Servlet2:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        String data = (String) context.getAttribute("data");//从ServletContext对象中取出数据
        response.getWriter().print("data="+data);
    }

Servlet2拿到的context与Servlet1设置data的context是同一个对象,所以说servlet中this.getServletContext(); this.getServletConfig().getServletContext(); 本质上没有区别。

自己的笔记,不对请指正。。。