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的一段代碼如下:


發佈了29 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章