1. 程式人生 > >java監聽器之實現在線人數顯示

java監聽器之實現在線人數顯示

tomcat -- 產生 並且 過期 lis efficient 屬性 活動

在碼農的世界裏只有bug才能讓人成長,The more bugs you encounter, the more efficient you will be!

java中的監聽器分為三種:ServletRequestListener、HttpSessionListener、ServletContextListener;

ServletRequest--請求,在客戶端對服務器發生請求(訪問)時發生,請求一次發生一次(不考慮請求轉發),

請求結束,該對象銷毀;

HttpSession--會話,單個用戶在某段時間內(Tomcat默認為30min,可以設置),自第一次發生請求(訪問)

時創建,直到過期,該對象銷毀;

ServletContext--上下文,該對象存在於服務器端,自服務器開啟時創建,直到服務器關閉該對象銷毀。

那麽,就有這樣一個思路:一個用戶持續對網站的訪問,請求數會很多,但是該用戶多次請求的Session卻一

直都是一個(唯一性)。我們可以在第一次訪問時把Session對象的ID存到服務器(上下文),後面每一次請求的

時候,我們可以檢查,該請求的Session對象是否已經在服務器(上下文),如果在,說明這次請求和之前的某次

請求是同一個用戶,如果不在,那麽將這個請求產生的新Session對象的ID存到服務器(上下文)。Session對象到

期,自然就被銷毀(可以看做用戶長時間每活動,被迫下線了),那麽將這個SessionID所在的整條信息刪除,也

就是可以看做,當前訪問用戶減少一個。其實除了多次請求產生的Session具有唯一性之外,發出請求的設備也是

具有唯一性的,我們可以通過獲得設備的IP進行標識。我們可以將這兩個信息存到用戶類中,每個用戶對象都有這

兩個屬性,並且是唯一的。

1.ServletRequest

java監聽器之實現在線人數顯示