Session生命週期

2021-09-01 18:50:32 字數 1393 閱讀 6235

今天我就詳細講解下中間那個兄弟. 因為在網上看到很多文章. 幾乎毫無例外的說. 乙個瀏覽器只有乙個session, 瀏覽器關閉session就消失了.其實這種方法是不正確的.

要了解session首先要知道乙個概念:session的銷毀只有兩種情況:第一:session呼叫了 session.invalidate()方法. 第二:前後兩次請求超出了session指定的生命週期時間. 其中session的生命週期時間可以在web.xml配置. 預設30分鐘 在web.xml可以做如下配置:

5如何來證明關閉瀏覽器的時候session沒有銷毀呢? 我們可以建立乙個sessionlistener 此***專門用來監聽session的生命週期的.**如下:

別忘記在web.xml中配置***, 配置完畢後 可以做個測試. 當瀏覽器關閉後此***的 sessiondestroyed方法並沒有執行,而是在5分鐘左右(個人電腦沒有那麼精確) 才會觸發sessiondestroyed ,當然 再開啟瀏覽器的時候 sessioncreated 會自動呼叫 關閉5分鐘後sessiondestroyed 又會自動呼叫, 通過getid方法大家可以判斷是否為同乙個session. 所以網上說明的關閉瀏覽器session就消失.其實並不正確. 如果沒有任何配置的情況下. 關閉瀏覽器30分鐘後session才會消失的.

我們可以利用這個概念做什麼呢? 最典型的就是利用 sessionlistener 的sessiondestroyed方法 來記錄使用者非正常退出的時間. 使用者在訪問某個**的時候(目前的銀行**都有此功能) 顯示了使用者的最後登入時間. 此時間如何獲取. 在這裡分兩種情況

如果使用者按"退出" 按鈕那就好說了. 跳轉到action中.記錄下使用者退出的時間. 儲存到持久層中

如果使用者非正常退出, 在沒有配置session的情況下 缺省會在30分鐘後呼叫sessiondestroyed 那麼我們同樣可以在此獲取使用者退出的時間,在sessiondestroyed 呼叫業務邏輯完成我們想要實現的功能

有關session第2個典型的應用就是session中儲存了使用者的登入資訊. 那麼就可以訪問使用者許可權的一些頁面.

有關這個應用要注意乙個問題: 儲存到session中的 user物件一定要實現serializable介面. serializable的作用可以參考相關資料.正常情況下當我們做測試的時候關閉tomcat 大家會在 tomcat安裝目錄\work\catalina\localhost\專案名 資料夾下面看到有乙個 sessions.ser 的檔案.

此檔案就是session在tomcat停止的時候 持久化到硬碟中的檔案. 所有當前訪問的使用者session都儲存到此檔案中. tomcat啟動成功後.sessions.ser 又會反序列化到記憶體中,所以啟動成功後此檔案就消失了. 所以正常情況下 從啟tomcat使用者是不需要登入的. 注意有個前提.就是儲存到session裡面的user物件所對應的user類必須要序列化才可以

session 生命週期

session的生命週期 當發生下面的情況時,session以及其中的資料會被清空 使用者關閉當前正在使用的瀏覽器 關閉網頁伺服器 使用者未向服務 起提出請求或超過預定的時間,tomcat伺服器預設為30分鐘 執行程式結束session。注意,當瀏覽器關閉時,不會向伺服器傳送訊息,這次會話關聯的所有...

Session生命週期

session生命週期 session儲存在伺服器端,一般放置在伺服器的記憶體中 為了高速訪問 session在使用者第一次訪問伺服器時建立,需要注意只有訪問jsp,servlet等程式時才會建立session,只訪問html image等靜態資源並不會建立session,可呼叫request.ge...

session生命週期

建立 當客戶端第一次訪問某個jsp或servlet時候,伺服器會為當前會話建立乙個sessionid,每次客戶端向伺服器傳送請求,都會將此sessionid攜帶過去,服務端會為此sessionid進行校驗。活動 某次會話當中通過通過超連結開啟的頁面屬於同一次會話 只要當前會話沒有關閉,重新開啟新的瀏...