ServletContextListener

来源:互联网 发布:守望先锋配置检测软件 编辑:程序博客网 时间:2024/06/05 05:10

Servlet API里面有一个ServletContextListener的接口,它可以监听ServletContext对象的生命周期。
当Servlet容器启动或者终止的时候就会出发ServletContextEvent时间,这个事件就由ServletContextListener来处理。ServletContextListener接口中定义了处理ServletContextEvent事件的两个方法。

/**    Servlet容器启动web应用的时候就会调用此方法进行初始化,在初始化结束之后容器对Filter初始化**/contextInitialized(ServletContextEvent event)
/**当Servlet容器终止web应用的时候调用这个方法。调用此方法之前会先小灰所有的Servlet和FiltercontextDestroyed(ServletContextEvent event)**/

可以利用这个写一个统计网页被客户端访问的次数。

package ServletContextTest; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyServletContextListener implements ServletContextListener{  public void contextInitialized(ServletContextEvent sce){    System.out.println("helloapp application is Initialized.");    // 获取 ServletContext 对象    ServletContext context=sce.getServletContext();    try{       // 从文件中读取计数器的数值       BufferedReader reader=new BufferedReader(           new InputStreamReader(context.           getResourceAsStream("/count/count.txt")));       int count=Integer.parseInt(reader.readLine());       reader.close();       // 创建计数器对象       Counter counter=new Counter(count);       // 把计数器对象保存到 Web 应用范围       context.setAttribute("counter",counter);       } catch(IOException e) {          e.printStackTrace();       }   }   public void contextDestroyed(ServletContextEvent sce){       System.out.println("helloapp application is Destroyed.");       // 获取 ServletContext 对象       ServletContext context=sce.getServletContext();       // 从 Web 应用范围获得计数器对象       Counter counter=(Counter)context.getAttribute("counter");       if(counter!=null){       try{          // 把计数器的数值写到 count.txt 文件中          String filepath=context.getRealPath("/count");          filepath=filepath+"/count.txt";          PrintWriter pw=new PrintWriter(filepath);          pw.println(counter.getCount());          pw.close();         } catch(IOException e) {             e.printStackTrace();         }     }   }}
0 0
原创粉丝点击