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

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

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

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    利用HttpSessionListener實現(xiàn)網(wǎng)站在線人數(shù)統(tǒng)計功能

    利用HttpSessionListener實現(xiàn)網(wǎng)站在線人數(shù)統(tǒng)計功能
     
    在網(wǎng)站中經(jīng)常需要進行在線人數(shù)的統(tǒng)計。過去的一般做法是結(jié)合登錄和退出功能,即當用戶輸入用戶名密碼進行登錄的時候計數(shù)器加1,然后當用戶點擊退出按鈕退出系統(tǒng)的時候計數(shù)器減1。這種處理方式存在一些缺點,例如:用戶正常登錄后,可能會忘記點擊退出按鈕,而直接關閉瀏覽器,導致計數(shù)器減1的操作沒有及時執(zhí)行;網(wǎng)站上還經(jīng)常有一些內(nèi)容是不需要登錄就可以訪問的,在這種情況下也無法使用上面的方法進行在線人數(shù)統(tǒng)計。
      我們可以利用Servlet規(guī)范中定義的事件監(jiān)聽器(Listener)來解決這個問題,實現(xiàn)更準確的在線人數(shù)統(tǒng)計功能。對每一個正在訪問的用戶,J2EE應用服務器會為其建立一個對應的HttpSession對象。當一個瀏覽器第一次訪問網(wǎng)站的時候,J2EE應用服務器會新建一個HttpSession對象,并觸發(fā)HttpSession創(chuàng)建事件,如果注冊了HttpSessionListener事件監(jiān)聽器,則會調(diào)用HttpSessionListener事件監(jiān)聽器的sessionCreated方法。相反,當這個瀏覽器訪問結(jié)束超時的時候,J2EE應用服務器會銷毀相應的HttpSession對象,觸發(fā)HttpSession銷毀事件,同時調(diào)用所注冊HttpSessionListener事件監(jiān)聽器的sessionDestroyed方法。
      可見,對應于一個用戶訪問的開始和結(jié)束,相應的有sessionCreated方法和sessionDestroyed方法執(zhí)行。這樣,我們只需要在HttpSessionListener實現(xiàn)類的sessionCreated方法中讓計數(shù)器加1,在sessionDestroyed方法中讓計數(shù)器減1,就輕松實現(xiàn)了網(wǎng)站在線人數(shù)的統(tǒng)計功能。
      下面就是利用HttpSessionListener實現(xiàn)在線人數(shù)統(tǒng)計的一個例子,這個例子已經(jīng)在中創(chuàng)軟件的J2EE應用服務器InforWeb中測試通過。
      首先,編寫一個簡單的計數(shù)器,代碼如下:
    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.    } 

      然后,編寫HttpSessionListener實現(xiàn)類,在這個實現(xiàn)類的sessionCreated方法中調(diào)用OnlineCounter的raise方法,在sessionDestroyed方法中調(diào)用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.     } 

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

    posted on 2007-09-14 17:16 gembin 閱讀(3092) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     

    導航

    統(tǒng)計

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 亚洲中文字幕久久精品无码APP| 成年美女黄网站18禁免费| 亚洲va中文字幕无码| 国产精品久久久久久亚洲影视| 一个人在线观看视频免费| 亚洲精品中文字幕无乱码麻豆| 亚洲三级在线免费观看| 亚洲国产视频一区| 动漫黄网站免费永久在线观看| 亚洲AV成人无码天堂| 四虎成人精品一区二区免费网站| 亚洲精品无码高潮喷水A片软| 好爽…又高潮了毛片免费看| 亚洲av日韩aⅴ无码色老头| 国产精品免费视频播放器| 男男gay做爽爽的视频免费| 亚洲国产精品成人AV无码久久综合影院| 美美女高清毛片视频黄的一免费 | 亚洲美女视频免费| 亚洲av乱码一区二区三区 | 亚洲爆乳AAA无码专区| 国产在线观看免费完整版中文版| 国产成人 亚洲欧洲| 亚洲欧洲精品成人久久曰影片| a毛片成人免费全部播放| 久久综合图区亚洲综合图区| 永久在线观看www免费视频| 亚洲人精品亚洲人成在线| 在线观看亚洲免费视频| 一个人免费观看www视频| 亚洲视频在线观看免费| 一级女人18毛片免费| 日韩少妇内射免费播放| 亚洲av无码不卡| 成人免费在线观看网站| 国产精品免费看久久久香蕉| 久久精品国产亚洲av影院| 日韩免费高清一级毛片在线| 国产麻豆一精品一AV一免费| 亚洲人成777在线播放| 国产性爱在线观看亚洲黄色一级片|