<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    snowolf

    這樣的一種生活
    posts - 23, comments - 5, trackbacks - 0, articles - 11

    利用HttpSessionListener實現網站在線人數統計功能

    Posted on 2006-02-24 14:51 snowolf 閱讀(218) 評論(0)  編輯  收藏 所屬分類: JAVA類
      在網站中經常需要進行在線人數的統計。過去的一般做法是結合登錄和退出功能,即當用戶輸入用戶名密碼進行登錄的時候計數器加1,然后當用戶點擊退出按鈕退出系統的時候計數器減1。這種處理方式存在一些缺點,例如:用戶正常登錄后,可能會忘記點擊退出按鈕,而直接關閉瀏覽器,導致計數器減1的操作沒有及時執行;網站上還經常有一些內容是不需要登錄就可以訪問的,在這種情況下也無法使用上面的方法進行在線人數統計。
      我們可以利用Servlet規范中定義的事件監聽器(Listener)來解決這個問題,實現更準確的在線人數統計功能。對每一個正在訪問的用戶,J2EE應用服務器會為其建立一個對應的HttpSession對象。當一個瀏覽器第一次訪問網站的時候,J2EE應用服務器會新建一個HttpSession對象,并觸發HttpSession創建事件,如果注冊了HttpSessionListener事件監聽器,則會調用HttpSessionListener事件監聽器的sessionCreated方法。相反,當這個瀏覽器訪問結束超時的時候,J2EE應用服務器會銷毀相應的HttpSession對象,觸發HttpSession銷毀事件,同時調用所注冊HttpSessionListener事件監聽器的sessionDestroyed方法。
      可見,對應于一個用戶訪問的開始和結束,相應的有sessionCreated方法和sessionDestroyed方法執行。這樣,我們只需要在HttpSessionListener實現類的sessionCreated方法中讓計數器加1,在sessionDestroyed方法中讓計數器減1,就輕松實現了網站在線人數的統計功能。
      下面就是利用HttpSessionListener實現在線人數統計的一個例子,這個例子已經在中創軟件的J2EE應用服務器InforWeb中測試通過。
      首先,編寫一個簡單的計數器,代碼如下:
    1. package gongfei.cmc.articles.onlinecounter;
    2. public class OnlineCounter {
    3.     private static long online = 0;    
    4.     public static long getOnline() {
    5.         return online;
    6.     }    
    7.     public static void raise(){
    8.         online++;
    9.     } 
    10.     public static void reduce(){
    11.         online--;
    12.    }
    13. }

      然后,編寫HttpSessionListener實現類,在這個實現類的sessionCreated方法中調用OnlineCounter的raise方法,在sessionDestroyed方法中調用OnlineCounter的reduce方法,代碼如下:
    1. package gongfei.cmc.articles.onlinecounter;
    2. import javax.servlet.http.HttpSessionEvent;
    3. import javax.servlet.http.HttpSessionListener;
    4. public class OnlineCounterListener implements HttpSessionListener {
    5.     public void sessionCreated(HttpSessionEvent hse) {
    6.         OnlineCounter.raise();
    7.     }
    8.     public void sessionDestroyed(HttpSessionEvent hse) {
    9.         OnlineCounter.reduce();
    10.     }
    11. }

      再然后,把這個HttpSessionListener實現類注冊到網站應用中,也就是在網站應用的web.xml中加入如下內容:
    1. <web-app>
    2.     ……
    3.     <listener>
    4.         <listener-class>
    5.             gongfei.cmc.articles.example.OnlineCounterListener
    6.         </listener-class>
    7.     </listener>
    8.     ……
    9. </web-app>

      OK,在線人數統計功能已經實現,只要在JSP頁面中加入下面這樣的腳本就能顯示但前在線人數了:
    1. <%@ page language="java" pageEncoding="GB2312" %>
    2. <%@ page import="gongfei.cmc.articles.onlinecounter.OnlineCounter" %>
    3. <html>
    4.     <head><title>On Line Counert</title></head>
    5.     <body bgcolor="#FFFFFF">
    6.         On line:<%=OnlineCounter.getOnline()%>
    7.     </body>
    8. </html>



    主站蜘蛛池模板: 亚洲日产乱码一二三区别 | 亚洲综合小说久久另类区| 深夜久久AAAAA级毛片免费看| 在线免费观看中文字幕| 亚洲熟女精品中文字幕| 狼友av永久网站免费观看| 亚洲国产精品无码久久| 亚洲精品线在线观看| 久热免费在线视频| 亚洲综合免费视频| 性xxxx视频播放免费| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲av无码潮喷在线观看| a级毛片免费观看视频| 亚洲成a人片在线观看日本| 91香蕉在线观看免费高清| 亚洲精品国精品久久99热一| 亚洲午夜国产精品无卡| 成熟女人牲交片免费观看视频| jiz zz在亚洲| 亚洲av无码国产精品色在线看不卡| 一级毛片a免费播放王色电影| 激情综合色五月丁香六月亚洲| 久久99热精品免费观看牛牛| 亚洲精品成人久久| 日韩免费无砖专区2020狼| 一个人看的www免费在线视频| 久久久久久a亚洲欧洲AV| 岛国av无码免费无禁网站| 日本免费精品一区二区三区| 亚洲成a人片在线观看日本| 18女人腿打开无遮掩免费| 国产精品亚洲av色欲三区| 亚洲尤码不卡AV麻豆| 国产精品永久免费10000| 国产精品无码亚洲精品2021| 中文字幕亚洲无线码a| 99精品国产免费久久久久久下载| 一级特黄色毛片免费看| 亚洲精彩视频在线观看| 日韩亚洲国产二区|