Servlet上下文监听器实例(转)

编写一个实例,使它能够对ServletContext以及属性进行监听。由以上介绍可知,该类需要实现ServletContextAttributeListener和ServletContextListener接口类。

 
 
  1. MyServletContextListener.Java  
  2. package com;  
  3. import java.io.FileOutputStream;  
  4. import java.io.PrintWriter;  
  5. import javax.servlet.ServletContext;  
  6. import javax.servlet.ServletContextAttributeEvent;  
  7. import javax.servlet.ServletContextAttributeListener;  
  8. import javax.servlet.ServletContextEvent;  
  9. import javax.servlet.ServletContextListener;  
  10. public class MyServletContextListener   
  11. implements ServletContextListener,ServletContextAttributeListener  
  12. {  
  13.      private ServletContext context null;  
  14. //定义一个ServletContext对象变量,赋为null  
  15.      public void contextInitialized(ServletContextEvent s)  
  16. {  
  17. //TODO 该方法实现了ServletContextListener接口定义的方法,
    对ServletContext进行初始化
     
  18. this.context s.getServletContext();                                
  19. //初始化一个ServletContext对象  
  20.   print("ServletContext初始化......");                                   
  21. //打印出该方法的操作信息  
  22.  }  
  23. public void contextDestroyed(ServletContextEvent s)   
  24. {  
  25. //TODO 该方法实现了ServletContextListener接口类定义方法,
    用于释放ServletContext对象
     
  26.         this.context null;  
  27.         print("ServletContext被释放......");  
  28.   }  
  29. public void attributeAdded(ServletContextAttributeEvent sa)  
  30.  {  
  31. //TODO 当上下文添加属性时,将调用该方法。这里只是将添加的属性信息打印出来  
  32.          print("增加ServletContext对象的一个属性:
    attributeAdded('"
    +sa. getName()+"',' "+sa.getValue()+"')");  
  33.   }  
  34.   public void attributeRemoved(ServletContextAttributeEvent sa)  
  35.  {  
  36. //TODO 当把ServletContext中的某个属性删除时,调用该方法  
  37.       print("删除ServletContext对象的某一个属性:
    attributeRemoved('"
    +sa.getName() +"','")");  
  38.   }  
  39.   public void attributeReplaced(ServletContextAttributeEvent sa)   
  40. {  
  41. //TODO 当上下文进行属性值更新时,将调用该方法  
  42.       print("更改ServletContext对象的某一个属性:
    attributeReplaced('"
    +sa.getName()+"', '"+sa.getValue()+"')");     
  43.           
  44.   private void print(String message)  
  45. {  
  46. //调用该方法在txt文件中打印出message字符串信息  
  47.      PrintWriter out null;  
  48.       Try  
  49. {  
  50.    out new PrintWriter(new FileOutputStream("D:\\output.txt",true));  
  51.    out.println(new java.util.Date().toLocaleString()+"
    ContextListener: "
    +message);  
  52.       out.close();  
  53.    }  
  54.       catch(Exception e)  
  55.     {  
  56.          e.printStackTrace();  
  57.     }  
  58. }  

程序说明:该监听器类实现了ServletContextAttributeListener和ServletContextListener两个接口类中的5个方法:

contextInitialized(ServletContextEvent s)方法用来初始化ServletContext对象。

contextDestroyed(ServletContextEvent s)方法在上下文中删除某个属性时调用。

attributeAdded(ServletContextAttributeEvent sa)方法在上下文中添加一个新的属性时调用。

attributeReplaced(ServletContextAttributeEvent sa)方法在更新属性时调用。

attributeRemoved(ServletContextAttributeEvent sa)方法在上下文中删除某个属性时会被调用。

在使用这个监听器之前还需要在Web模块中的web.xml配置文件中进行声明,代码如下:

 
 
  1.  
  2.   class>servlet.MyServlet
    ContextListenerclass>  
  3.  

接下来将编写JSP程序来操作ServletContext的属性,看看监听器程序作出什么反应,该JSP的一段代码如下:

 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值