1. 程式人生 > >HttpSessionListener實現網站線上人數統計

HttpSessionListener實現網站線上人數統計

        過去的一般做法是結合登入和退出功能,即當用戶輸入使用者名稱密碼進行登入的時候計數器加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實現線上人數統計的一個例子,親測通過。