Session的建立和銷毀

2021-07-30 09:18:28 字數 1360 閱讀 7763

session什麼時候被建立

乙個常見的錯誤是以為 session 在有客戶端訪問時就被建立,然而事實是直到某 server 端程式(如 servlet )呼叫

httpservletrequest.getsession(true)  //false 不會自動建立session
這樣的語句時才會被建立。

所以沒有呼叫getsession方法則不會建立session。

要了解session首先要知道乙個概念:session的銷毀只有兩種情況:

第一:session呼叫了 session.invalidate()方法。

第二:前後兩次請求超出了session指定的生命週期時間。

其中session的生命週期時間可以在web.xml配置。預設30分鐘 在web.xml可以做如下配置:

5

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

// 新建乙個session時觸發此操作  

// 銷毀乙個session時觸發此操作

別忘記在web.xml中配置***, 配置完畢後 可以做個測試。

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

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

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

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

Session的建立和銷毀

httpsession的生命週期 1 建立乙個httpsession物件 乙個常見的錯誤是以為在有客戶端訪問時就被建立 若第一次訪問某web應用的乙個jsp頁面,且該jsp頁面的page指定的session屬性為false 2 銷毀httpsession物件 注意 關閉瀏覽器只會使儲存在瀏覽器記憶體...

Session 的建立和銷毀

物件導向面向君,不負 不負卿。o page 指定的 session 屬性 1 預設情況下,第一次訪問乙個 web 應用的乙個 jsp 頁面時,該頁面都必須有乙個和這個請求相關聯的 session 物件.因為 page 指定的 session 屬性預設為 true 2 若把 session 屬性改為 ...

2 session的建立和銷毀

sesssion.removeattribute 方法和session.invalidate 方法的區別 前者只能銷毀某乙個session,而後者銷毀客戶端所有的session,釋放session所占用的資源 session.setmaxinactiveinterval int args 方法 設定...