(轉)httpSession

What is Session?

Session代表着服務器客戶端一次會話的過程。直到session失效(服務端關閉),或者客戶端關閉時結束。

How does session works?

Session 是存儲服務端的,並針對每個客戶端(客戶),通過SessionID來區別不同用戶的。Session是以Cookie技術或URL重寫實現。默認以Cookie技術實現,服務端會給這次會話創造一個JSESSIONID的Cookie值。

  • 當一個Session開始時,Servlet容器會創建一個HttpSession對象,那麼在HttpSession對象中,可以存放用戶狀態的信息

  • Servlet容器爲HttpSession對象分配一個唯一標識符即Sessionid,Servlet容器把Sessionid作爲一種Cookie保存在客戶端的 *瀏覽器* 中

  • 用戶每次發出Http請求時,Servlet容器會從HttpServletRequest對象中取出Sessionid,然後根據這個Sessionid找到相應的HttpSession對象,從而獲取用戶的狀態信息

session第一次請求


session第2次請求




網絡安全:




瀏覽器關閉後,Session會話結束了麼?

讓Session結束生命週期,有以下兩種辦法:

  • 一個是Session.invalidate()方法,不過這個方法在實際的開發中,並不推薦,可能在強制註銷用戶的時候會使用;
  • 一個是當前用戶和服務器的交互時間超過默認時間後,Session會失效

其實之前的Session一直都在服務器端,而當我們關閉瀏覽器時,此時的Cookie是存在

於瀏覽器的進程中的,當瀏覽器關閉時,Cookie也就不存在了

其實Cookie有兩種:

  • 一種是存在於瀏覽器的進程中;
  • 一種是存在於硬盤上

而session的Cookie是存在於瀏覽器的進程中,那麼這種Cookie我們稱爲會話Cookie

當我們重新打開瀏覽器窗口時,之前的Cookie中存放的Sessionid已經不存在了,此時

服務器從HttpServletRequest對象中沒有檢查到sessionid,服務器會再發送一個新的存

有Sessionid的Cookie到客戶端的瀏覽器中,此時對應的是一個新的會話,而服務器上

原先的session等到它的默認時間到之後,便會自動銷燬。


發佈了61 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章