Java Tools

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            83 隨筆 :: 0 文章 :: 16 評論 :: 0 Trackbacks
          由于工作需要,最近在找一些解決方案,發現Listener是一個很好的東西, 能夠監聽到session,application的create,destroy,可以監聽到session,application

           屬性綁定的變化,考慮了一下,可以應用在"在線人數統計","數據緩存"等各個方面,

          下面是整理的一些資料.



          Listener是Servlet的監聽器,它可以監聽客戶端的請求、服務端的操作等。通過監聽器,可以自動激發一些操作,比如監聽在線的用戶的數量。當增加一個HttpSession時,就激發sessionCreated(HttpSessionEvent se)方法,這樣就可以給在線人數加1。常用的監聽接口有以下幾個:

          ServletContextAttributeListener監聽對ServletContext屬性的操作,比如增加、刪除、修改屬性。

          ServletContextListener監聽ServletContext。當創建ServletContext時,激發contextInitialized(ServletContextEvent sce)方法;當銷毀ServletContext時,激發contextDestroyed(ServletContextEvent sce)方法。

          HttpSessionListener監聽HttpSession的操作。當創建一個Session時,激發session Created(HttpSessionEvent se)方法;當銷毀一個Session時,激發sessionDestroyed (HttpSessionEvent se)方法。

          HttpSessionAttributeListener監聽HttpSession中的屬性的操作。當在Session增加一個屬性時,激發attributeAdded(HttpSessionBindingEvent se) 方法;當在Session刪除一個屬性時,激發attributeRemoved(HttpSessionBindingEvent se)方法;當在Session屬性被重新設置時,激發attributeReplaced(HttpSessionBindingEvent se) 方法。

          下面我們開發一個具體的例子,這個監聽器能夠統計在線的人數。在ServletContext初始化和銷毀時,在服務器控制臺打印對應的信息。當ServletContext里的屬性增加、改變、刪除時,在服務器控制臺打印對應的信息。

          要獲得以上的功能,監聽器必須實現以下3個接口:

          HttpSessionListener

          ServletContextListener

          ServletContextAttributeListener

          我們看具體的代碼,見示例14-9。

          【程序源代碼】

          1 // ==================== Program Discription =====================

          2 // 程序名稱:示例14-9 : EncodingFilter .java

          3 // 程序目的:學習使用監聽器

          4 // ==============================================================

          5 import javax.servlet.http.*;

          6 import javax.servlet.*;

          7

          8 public class OnLineCountListener implements HttpSessionListener,

          ServletContextListener,ServletContextAttributeListener

          9 {

          10  private int count;

          11  private ServletContext context = null;

          12  

          13  public OnLineCountListener()

          14  {

          15   count=0;

          16   //setContext();

          17  }

          18  //創建一個session時激發

          19  public void sessionCreated(HttpSessionEvent se)

          20  {

          21   count++;

          22   setContext(se);

          23   

          24  }

          25  //當一個session失效時激發

          26  public void sessionDestroyed(HttpSessionEvent se)

          27  {

          28   count--;

          29   setContext(se);

          30  }

          31  //設置context的屬性,它將激發attributeReplaced或attributeAdded方法

          32  public void setContext(HttpSessionEvent se)

          33  {

          34   se.getSession().getServletContext().
          posted on 2007-07-02 13:33 和田雨 閱讀(1090) 評論(2)  編輯  收藏 所屬分類: Servlet

          評論

          # re: 監聽器統計在線的人數[未登錄] 2010-11-16 19:02 a
          hao  回復  更多評論
            

          # re: 監聽器統計在線的人數 2013-08-18 19:18 sdfa
          @a
          不錯很不錯值得學習  回復  更多評論
            

          主站蜘蛛池模板: 明光市| 乌海市| 清原| 健康| 曲周县| 辰溪县| 唐山市| 巫山县| 彩票| 平舆县| 镇巴县| 辽阳县| 大新县| 石景山区| 洛隆县| 乌什县| 佛教| 寿阳县| 郸城县| 桂平市| 延长县| 公安县| 响水县| 兴隆县| 武强县| 阜新| 西和县| 年辖:市辖区| 容城县| 留坝县| 闽清县| 印江| 五莲县| 怀来县| 景谷| 卢湾区| 波密县| 旅游| 五寨县| 新化县| 成安县|