32-Servlet上下文--ServletContext
Servlet上下文
Servlet上下文有叫做: ServletContext, 一个WEB应用只有一个ServletContext
上下文特点
- 当WEB服务器启动时,会为每一个WEB应用程序创建一块共享的存储区域。
 ServletContext也叫做“公共区域”,也就是同一个WEB应用程序中,所有的Servlet和JSP都可以共享同一个区域。ServletContext在WEB服务器启动时创建,服务器关闭时销毁。
获取上下文对象
再servlet类中:
ServletContext context = this.getServletContext(); // 获取上下文对象
// context.setAttribute(<String>, <Object>); // 往上下文中存数据
// context.removeAttribute(<String>); // 删除上下文中的某一个数据
存入的数据整个WEB应用的任何servlet都能获取到, 关闭web服务器的时候失效
代码示例
AServlet类 (Servlet类)
@WebServlet(name = "AServlet", value = "/a")//使用注解
public class AServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        	throws ServletException, IOException {
        doGet(request, response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        	throws ServletException, IOException {
        // 获取上下文对象
        ServletContext context = this.getServletContext();
        String name = "jack";
        // 存入一个数据
        context.setAttribute("name", name);
    }
}
BServlet类 (Servlet类)
@WebServlet(name = "BServlet", value = "/b")
public class BServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        	throws ServletException, IOException {
        doGet(request, response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        	throws ServletException, IOException {
        // 获取上下文对象
        ServletContext context = this.getServletContext();
        // 获取上下文中的数据
        String name = (String) context.getAttribute("name");
        response.getWriter().write(name);
    }
}
浏览器先访问 /a, 然后访问 /b 浏览器显示:
jack
上下文和Session的区别
- 
作用范围不同
HttpSession是针对每一个客户端浏览器单独有一个。ServletContext是针对每一个WEB应用程序有一个 - 
存活时间不同:
HttpSession第一次访问服务器时创建,session超时后销毁(默认无响应30分钟后)ServletContext服务器启动时创建,服务器停止时销毁。 
                
            
        
浙公网安备 33010602011771号