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 和田雨 閱讀(1092) 評論(2)  編輯  收藏 所屬分類: Servlet

          評論

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

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

          主站蜘蛛池模板: 玉门市| 三明市| 平果县| 交口县| 吐鲁番市| 青岛市| 永昌县| 阜城县| 浙江省| 南澳县| 拉孜县| 琼结县| 旬邑县| 迭部县| 巴青县| 西昌市| 营山县| 崇阳县| 新泰市| 延津县| 射阳县| 乌兰浩特市| 弥渡县| 兖州市| 舟山市| 明水县| 绿春县| 即墨市| 沧源| 全州县| 五大连池市| 闻喜县| 云浮市| 体育| 桦川县| 武胜县| 安多县| 集安市| 当涂县| 汶上县| 固镇县|