session是什么
首先,我們需要知道session是什么。有比較專業的人將session稱之為會話控制。說實在的,如果這么說的話,我也不清楚session到底算是什么。
其實session是一個存在服務器上的類似於一個散列表格的文件。里面存有我們需要的信息,在我們需要用的時候可以從里面取出來。類似於一個大號的map吧,里面的鍵存儲的是用戶的sessionid,用戶向服務器發送請求的時候會帶上這個sessionid。這時就可以從中取出對應的值了。
session有什么用
說起session的作用,簡單的舉個例子:我們在登錄某些網站的時候,輸入了用戶名密碼,登錄以后再打開新的頁面時,自動顯示的是已登錄的狀態,不需要再次重新登錄。這里就是session功能的一個小小的體現。
那么,剛才這個小小的應用發生了什么呢?
如圖所示:在用戶1和用戶2登錄的時候,我們的服務器在他們登錄成功后,在session表中為他們每個用戶分配了一個sessionid並且存下了一個對應的信息。當用戶第二次訪問該服務器的時候,會將sessionid在request請求中攜帶者發送過去。這時我們的服務器就可以根據sessionid確定用戶存儲的數據,然后進行使用。如圖所示:
session的生命周期
當session超過一定時間(一般為30分鍾)沒有被訪問時,服務器就會認為這個session對應的客戶端已經停止活動,然后將這個session刪除。用以節省空間。
當用戶關閉瀏覽器時,sessionId的信息會丟失,雖然服務器session還在,依然無法訪問到session中的數據。