servlet学习笔记_ServletContext

转载自:http://lewis-q.iteye.com/blog/161814,仅供学习,谢谢作者

1 Web应用共享数据区ServletContext接口

ServletContext接口表示一个web应用的上下文。可以想象成一个web一个能用的共享数据区域,该区域保存整个web共享数据。

1.1 Servlet容器何时创建ServeltContext接口实现类

当一个web应用启动的时候,就会创建该ServletContext接口的实现类。我们可以在根据需求,读写ServletContext这个web共享区的数据,那么如何获得ServletContext这个实例呢?下面提供了两种方法

1.2 如何获得ServletContext接口实例

方法1:
可以通过ServletConfig接口的getServletContext()方法获得
方法2:
通过GenericServlet抽象类的getServletContext()方法获得,不过这个方法其实也是调用了ServletConfig的getServletContext()方法
在GenericServlet.java中

Java代码    收藏代码
  1. public ServletConfig getServletConfig() {  
  2.   return config;  
  3.  }  
  4.   
  5.  public ServletContext getServletContext() {  
  6.   return getServletConfig().getServletContext();  
  7.  }  

1.3 一个计数器实例

Java代码    收藏代码
  1. package servletcontext;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletContext;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class CounterServlet extends HttpServlet  
  12. {  
  13.     public void doGet(HttpServletRequest request, HttpServletResponse response){  
  14.         try  
  15.         {  
  16.             response.setCharacterEncoding("gb2312");  
  17.             //获取ServletContext接口的实现类  
  18.             ServletContext sc = super.getServletContext();  
  19.             Integer count = (Integer) sc.getAttribute("count");  
  20.             if(null == count){  
  21.                 count = new Integer(1);  
  22.             }else{  
  23.                 count = new Integer(count.intValue()+1);  
  24.             }  
  25.             sc.setAttribute("count", count);  
  26.             PrintWriter out = response.getWriter();  
  27.             out.print("<body>");  
  28.             out.print("你登录的次数是:"+count.intValue());  
  29.             out.print("</body>");  
  30.             out.close();  
  31.               
  32.         } catch (IOException e)  
  33.         {  
  34.             e.printStackTrace();  
  35.         }  
  36.     }  
  37.       
  38.     public void doPost(HttpServletRequest request, HttpServletResponse response){  
  39.         doGet(request,response);  
  40.     }  
  41. }  

 

Xml代码    收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4"   
  3.     xmlns="http://java.sun.com/xml/ns/j2ee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  6.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  7.     
  8.   <servlet>  
  9.     <servlet-name>CountServlet</servlet-name>  
  10.     <servlet-class>servletcontext.CounterServlet</servlet-class>  
  11.   </servlet>  
  12.     
  13.   <servlet-mapping>  
  14.     <servlet-name>CountServlet</servlet-name>  
  15.     <url-pattern>/count</url-pattern>  
  16.   </servlet-mapping>  
  17.     
  18. </web-app>  
 

猜你喜欢

转载自ansn001.iteye.com/blog/1605727