java監聽器之實現在線人數顯示
在碼農的世界裏只有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監聽器之實現在線人數顯示