天天看點

HttpSession 原理|學習筆記

開發者學堂課程【JSP 快速入門:HttpSession 原理】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/33/detail/714

HttpSession 原理

内容介紹: 

一. HttpSession 原理 

二. 擷取 session 的方法

三. 不同指令的差別

一.HttpSession 原理

當使用者第一次通路伺服器時,伺服器會建立一個 session 并通過 cookie 提供一個sessionID 給用戶端,資訊會儲存到 session 中,而使用者可以通過 sessionID 檢視,一旦中途關閉了浏覽器,裝有 sessionID 的 cookie 就不存在了,也就無法通路建立的 session;

長時間不使用 session 也會導緻存放 sessionID 的cookie 也會不存在,不能再次通路已建立的 session 。

需要建立新的 session 并獲得新的 sessionID 。

二.擷取 session 的方法

事實上,伺服器不會立即建立 session ,而是在第一次擷取 session 時才會建立,其擷取方法是通過 request.getSession(),如果 sessionId 不存在,建立 session ,把 session 儲存起來,把新建立的 sessionId 儲存到 cookie 中;如果 sessionId 存在,通過 sessionId 查找 session 對象,如果沒有查找到,建立 session ,把 session 儲存起來,把新建立的 sessionId 儲存到 cookie 中;如果 sessionId 存在,且通過 sessionId 查找到了 session 對象,那麼就不會再建立 session 對象了。 

如果建立了新的 session ,浏覽器會得到一個包含了 sessionID 的 cookie ,這個 Cookie 的生命為-1,即隻在浏覽器記憶體中存在:如果不關閉浏覽器,那麼 cookie 下次請求時,再次執行 request.getSession() 方法時,因為可以通過 cookie 中的 sessionId 找到 session 對象,是以與上一次請求使用的是同一 session 對象。

三.不同指令的差別

(1)request.getSession(false),不存在 session 時傳回 null,而不會建立 session

如果 session 緩存中(如果 cookie 存在)

(2)request.getSession(true)

(3)request.getSession()