概念
ServletContext是servlet的三大域对象的应用之一(servlet的三大域对象应用为:request、session、application(ServletContext))
Cookie对象存于用户的客户端,Session对象每个客户端有一个存于服务器端,ServletContext对象存于服务器端,可被所有客户端共享。所以当涉及多个用户共享信息,而信息量又不大不想存到数据库的时候,可以考虑使用ServletContext对象
常见应用
1、网页计数器
2、显示多少人同时在线
3、简单的聊天室功能
ServletContext的特点
1、Web应用服务器会为在其中的每一个Web应用生成一个ServletContext对象,该ServletContext对象代表该Web应用,并且为该Web应用的所有客户端所共享。获得ServletContext对象的引用的常见方法有二,一是
ServletContext context=getServletContext();
二是
ServletContext context=getServletConfig().getServletContext()
2、一个Web应用的所有Servlet对象共用一个ServletContext对象,因此Servlet对象可以通过ServletContext对象进行通信。ServletContext对象又叫做context域对象,简单的公共聊天室经常用到它。
3、在web应用关闭或reload或者Tomcat关闭时ServletContext会销毁
举例说明ServletContext对象的使用
作用:统计网站的访问量
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out=response.getWriter();
response.setContentType("text/html");//响应正文的MIME类型
response.setCharacterEncoding("UTF-8");//响应的编码格式
ServletContext context=this.getServletConfig().getServletContext();//获得ServletContext对象
Integer count=(Integer)context.getAttribute("counter");//从ServletContext对象中获得计数器对象
if(count==null) {//如果为空,就在ServletContext对象中设置一个计数器的属性
count=1;
context.setAttribute("counter", count);
}else {
context.setAttribute("counter", count+1);//如果不为空就在该计数器的属性上加一
}