Java Tools

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            83 隨筆 :: 0 文章 :: 16 評論 :: 0 Trackbacks
          <2013年8月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          公告

          Free Hit Counters

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          BBS

          LTD

          OpenSource

          Study

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          由于工作需要,最近在找一些解決方案,發現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 和田雨 閱讀(1096) 評論(2)  編輯  收藏 所屬分類: Servlet

          評論

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

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

          主站蜘蛛池模板: 五峰| 卫辉市| 青龙| 淮滨县| 神农架林区| 延吉市| 彩票| 云和县| 手游| 克山县| 德惠市| 景德镇市| 张北县| 和平区| 丰台区| 藁城市| 阿瓦提县| 东城区| 沙河市| 左权县| 虎林市| 昌黎县| 呼图壁县| 裕民县| 诸城市| 陵川县| 丹巴县| 珲春市| 清水县| 凌云县| 建平县| 宣恩县| 安泽县| 内黄县| 金秀| 友谊县| 徐州市| 襄城县| 深圳市| 志丹县| 南木林县|