Session的工作原理

2021-10-09 12:12:43 字數 926 閱讀 1291

在伺服器中系統會為每個會話維護乙個 session。不同的會話,對應不同的 session。系統是如何識別各個 session 物件的?即是如何做到在同一會話過程中,一直使用的是同乙個 session 物件呢?

(1) 寫入 session 列表

伺服器對當前應用中的 session 是以 map 的形式進行管理的,這個 map 稱為 session 列表。該 map 的 key 為乙個 32 位長度的隨機串,這個隨機串稱為 jsessionid,value 則為 session物件的引用。當使用者第一次提交請求時,服務端 servlet 中執行到 request.getsession()方法後,會自動生成乙個 map.entry 物件,key 為乙個根據某種演算法新生成的 jsessionid,value 則為新建立的 httpsession 物件。

(2) 伺服器生成並傳送 cookie

在將 session 資訊寫入 session 列表後,系統還會自動將「jsessionid」作為 name,這個 32 位長度的隨機串作為 value,以 cookie 的形式存放到響應報頭中,並隨著響應,將該cookie 傳送到客戶端。

(3) 客戶端接收並傳送 cookie

客戶端接收到這個 cookie 後會將其存放到瀏覽器的快取中。即,只要客戶端瀏覽器不關閉,瀏覽器快取中的 cookie 就不會消失。當使用者提交第二次請求時,會將快取中的這個 cookie,伴隨著請求的頭部資訊,一塊傳送到服務端。

(4) 從 session 列表中查詢

服務端從請求中讀取到客戶端傳送來的 cookie,並根據 cookie 的 jssessionid 的值,從map 中查詢相應 key 所對應的 value,即 session 物件。然後,對該 session 物件的域屬性進行讀寫操作。

Session的工作原理

首先,我們需要知道session是什麼。有比較專業的人將session稱之為會話控制。說實在的,如果這麼說的話,我也不清楚session到底算是什麼。其實session是乙個存在伺服器上的類似於乙個雜湊 的檔案。裡面存有我們需要的資訊,在我們需要用的時候可以從裡面取出來。類似於乙個大號的map吧,裡...

session 的工作原理?

session 是瀏覽器和伺服器會話過程中,伺服器分配的一塊儲存空間。伺服器預設為瀏覽器在cookie中設定 sessionid,瀏覽器在向伺服器請求過程中傳輸 cookie 包含 sessionid 伺服器根據 sessionid 獲取出會話中儲存的資訊。由於 http 協議是無狀態的,即 htt...

Session的工作原理

以前在學習的時候沒怎麼注意,今天又回過頭來仔細研究研究了一下session的生命週期。session儲存在伺服器端,一般為了防止在伺服器的記憶體中 為了高速訪問 sessinon在使用者訪問第一次訪問伺服器時建立,需要注意只有訪問jsp servlet等程式時才會建立session,只訪問html ...