ServletContext简介
- WEB容器在启动时会为每个Web应用程序创建一个对应的ServletContext,作用于该整个Web应用,并且被所有客户端共享。
- 因为一个Web应用中的所有Servlet共享同一个ServletContext对象,所以Servlet对象之间可以通过ServletContext对象来实现互相通讯。
使用ServletContext域对象
- 生命周期:服务器创建时开始,到服务器关闭时结束
- 获得ServletContext对象:
//1.直接获取
ServletContext servletContext = this.getServletContext();
//2.先获取config对象
ServletContext servletContext = this.getServletConfig().getServletContext();
-
常用方法
- 添加属性:
setAttribute(String name,Object obj);
- 活得属性:
getAttribute(String name)
,返回Object - 删除属性:
removeAttribute(String name)
- 添加属性:
一个简单的访问页面次数计数器案例:
创建Servlet1和Servlet2,Servlet1用于在ServletContext中创建属性,Servlet2用于从ServletContext读取属性,先访问Servlet1再访问Servlet2。
Servlet1中:
@Override
public void init() throws ServletException {
//初始化时创建一个计数器,
int count = 0;
//将计数器存入域对象中
this.getServletContext().setAttribute("count", count);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取计数器
Integer count = (Integer)this.getServletContext().getAttribute("count");
//访问一次计数器加一
count++;
response.getWriter().write("servlet1: " + count);
//更新计数器
this.getServletContext().setAttribute("count", count);
}
访问Servlet1:
Servlet2中:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取计数器
Integer count = (Integer)this.getServletContext().getAttribute("count");
response.getWriter().write("servlet2:" + count);
}
访问Servlet2: