<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
    主站蜘蛛池模板: 9久9久女女免费精品视频在线观看| 99久久免费看国产精品| 免费精品人在线二线三线区别| 麻豆亚洲AV永久无码精品久久| 在线毛片片免费观看| 亚洲人成网www| 中国xxxxx高清免费看视频| 亚洲精品亚洲人成在线麻豆| 四虎在线免费视频| 亚洲国产乱码最新视频| 免费观看的毛片手机视频| 亚洲AV无码一区二区三区鸳鸯影院| 国产伦一区二区三区免费| a一级毛片免费高清在线| 精品亚洲综合在线第一区| 久久国产精品免费看| 亚洲色欲色欲www| 日本无吗免费一二区| 日日躁狠狠躁狠狠爱免费视频| 亚洲深深色噜噜狠狠爱网站| 国产精品免费大片| 亚洲国产熟亚洲女视频| 亚洲免费在线观看| 午夜无码A级毛片免费视频| 亚洲精品亚洲人成在线播放| 国产片免费福利片永久| 99久久成人国产精品免费| 亚洲精品视频免费看| 国产在线不卡免费播放| 少妇性饥渴无码A区免费| 亚洲国产精品网站久久| 国产一精品一aⅴ一免费| 国产午夜无码精品免费看动漫| 亚洲最大黄色网站| 亚洲av中文无码| 69视频在线是免费观看| 亚洲国产成人久久精品大牛影视| 亚洲综合日韩久久成人AV| 免费做爰猛烈吃奶摸视频在线观看| 日本一区二区三区免费高清在线| 亚洲一二成人精品区|