日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用HttpSessionListener实现网站在线人数统计功能

發(fā)布時間:2023/11/29 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用HttpSessionListener实现网站在线人数统计功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

在網(wǎng)站中經(jīng)常需要進行在線人數(shù)的統(tǒng)計。過去的一般做法是結(jié)合登錄和退出功能,即當用戶輸入用戶名密碼進行登錄的時候計數(shù)器加1,然后當用戶點擊退出按鈕退出系統(tǒng)的時候計數(shù)器減1。這種處理方式存在一些缺點,例如:用戶正常登錄后,可能會忘記點擊退出按鈕,而直接關(guān)閉瀏覽器,導(dǎo)致計數(shù)器減1的操作沒有及時執(zhí)行;網(wǎng)站上還經(jīng)常有一些內(nèi)容是不需要登錄就可以訪問的,在這種情況下也無法使用上面的方法進行在線人數(shù)統(tǒng)計。

  我們可以利用Servlet規(guī)范中定義的事件監(jiān)聽器(Listener)來解決這個問題,實現(xiàn)更準確的在線人數(shù)統(tǒng)計功能。對每一個正在訪問的用戶,J2EE應(yīng)用服務(wù)器會為其建立一個對應(yīng)的HttpSession對象。當一個瀏覽器第一次訪問網(wǎng)站的時候,J2EE應(yīng)用服務(wù)器會新建一個HttpSession對象,并觸發(fā)HttpSession創(chuàng)建事件,如果注冊了HttpSessionListener事件監(jiān)聽器,則會調(diào)用HttpSessionListener事件監(jiān)聽器的sessionCreated方法。相反,當這個瀏覽器訪問結(jié)束超時的時候,J2EE應(yīng)用服務(wù)器會銷毀相應(yīng)的HttpSession對象,觸發(fā)HttpSession銷毀事件,同時調(diào)用所注冊HttpSessionListener事件監(jiān)聽器的sessionDestroyed方法。

  可見,對應(yīng)于一個用戶訪問的開始和結(jié)束,相應(yīng)的有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應(yīng)用服務(wù)器InforWeb中測試通過。

  首先,編寫一個簡單的計數(shù)器,代碼如下:

  • package gongfei.cmc.articles.onlinecounter;
  • public class OnlineCounter {
  • ????private static long online = 0;?????
  • ????public static long getOnline() {
  • ????????return online;
  • ???? }?????
  • ????public static void raise(){
  • ???????? online++;
  • ???? }??
  • ????public static void reduce(){
  • ???????? online--;
  • ??? }
  • }
  •   然后,編寫HttpSessionListener實現(xiàn)類,在這個實現(xiàn)類的sessionCreated方法中調(diào)用OnlineCounter的raise方法,在sessionDestroyed方法中調(diào)用OnlineCounter的reduce方法,代碼如下:

  • package gongfei.cmc.articles.onlinecounter;
  • import javax.servlet.http.HttpSessionEvent;
  • import javax.servlet.http.HttpSessionListener;
  • public class OnlineCounterListener implements HttpSessionListener {
  • ????public void sessionCreated(HttpSessionEvent hse) {
  • ???????? OnlineCounter.raise();
  • ???? }
  • ????public void sessionDestroyed(HttpSessionEvent hse) {
  • ???????? OnlineCounter.reduce();
  • ???? }
  • }
  •   再然后,把這個HttpSessionListener實現(xiàn)類注冊到網(wǎng)站應(yīng)用中,也就是在網(wǎng)站應(yīng)用的web.xml中加入如下內(nèi)容:

  • ???? ……
  • ????
  • ????????
  • ???????????? gongfei.cmc.articles.example.OnlineCounterListener
  • ????????
  • ????
  • ???? ……
  • 轉(zhuǎn)載于:https://my.oschina.net/hpujsj/blog/6821

    總結(jié)

    以上是生活随笔為你收集整理的利用HttpSessionListener实现网站在线人数统计功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。