1. 程式人生 > >javaweb實現單一登入和統計實時訪問量的一點思路

javaweb實現單一登入和統計實時訪問量的一點思路

相關參考資料:

http://blog.csdn.net/scu_bao/article/details/7269027

http://blog.csdn.net/ranmudaofa/article/details/39623901

http://uule.iteye.com/blog/824115

單點登入:
第一步:

使用者登入時以使用者唯一標記(且這個標記最好設定好後永遠不會改變)為key,sessionID為value儲存到一個全域性的map中
使用者主動退出或異地登陸被強制退出時


第二步:

當有另外的客戶端以相同的賬號登入時,以使用者唯一的標記為key從map中獲取之前登入的sessionID,然後獲取session 執行session.invalidate() 手動銷燬session,然後將之前的帳號資訊(key,value)移除,替換最新的(其實和第一步是同一步)


第三步:

定義自己的攔截器判斷session是否已經失效
主要判斷兩種情況
1. session到達設定的過期時間限制,session中儲存資料被清空 即session.getattribute() 獲取值為空
2. 主動呼叫session.invalidate() 銷燬session,即session.getattribute()會報空指標
如果session已失效則重定向到錯誤頁面提示


PS:

關於如何根據sessionID獲取session
沒找到相關的根據id獲取session的介面,但是我們可以通過監聽sessionlistener和全域性靜態map實現自己的SessionContext
建立自己的sessionlistener  有sessionDestroyed,sessionCreated兩個方法監聽session的建立和銷燬
當建立session時,觸發sessionCreated已sessionid為key,session為value存到全域性靜態map中,當銷燬session時,觸發sessionDestroyed移除相應的session,
當想通過sessionid獲取session就可以從這個map中獲取啦!(該方法同樣適用於統計實時訪問量)