關於Session的知識點

2021-08-02 11:06:15 字數 1741 閱讀 6784

今天想和大家分享乙個關於session的話題: 當瀏覽器關閉時,session就被銷毀了?

我們知道session是jsp的九大內建物件(也叫隱含物件)中的乙個,它的作用是可以保

存當前使用者的狀態資訊,初學它的時候,認為session的生命週期是從開啟乙個瀏覽器窗

口傳送請求到關閉瀏覽器視窗,但其實這種說法是不正確的!下面就具體的去解釋:

當使用者第一次訪問web應用中支援session的某個網頁時,就會開始乙個新的session,

那麼接下來當使用者瀏覽這個web應用的不同網頁時,始終處於乙個session中

再詳細些:

以上就是session的執行機制,但是還沒有提到session的生命週期,再往下了解!

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

我們知道session是存在於伺服器端的,當把瀏覽器關閉時,瀏覽器並沒有向伺服器傳送

任何請求來關閉session,自然session也不會被銷毀,但是可以做一點努力,在所有的

客戶端頁面裡使用js的window.onclose來監視瀏覽器的關閉動作,然後向伺服器傳送一

個請求來關閉session,但是這種做法在實際的開發中也是不推薦使用的,最正常的辦法

就是不去管它,讓它等到預設的時間後,自動銷毀

那麼為什麼當我們關閉瀏覽器後,就再也訪問不到之前的session了呢?

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

於瀏覽器的程序中的,當瀏覽器關閉時,cookie也就不存在了。

其實cookie有兩種:

而session的cookie是存在於瀏覽器的程序中,那麼這種cookie我們稱為會話cookie,

當我們重新開啟瀏覽器視窗時,之前的cookie中存放的sessionid已經不存在了,此時

伺服器從httpservletrequest物件中沒有檢查到sessionid,伺服器會再傳送乙個新的存

有sessionid的cookie到客戶端的瀏覽器中,此時對應的是乙個新的會話,而伺服器上

原先的session等到它的預設時間到之後,便會自動銷毀。

注意:當在同乙個瀏覽器中同時開啟多個標籤,傳送同乙個請求或不同的請求,仍是同乙個session;

當不在同乙個視窗中開啟相同的瀏覽器時,傳送請求,仍是同乙個session;

當使用不同的瀏覽器時,傳送請求,即使傳送相同的請求,是不同的session;

當把當前某個瀏覽器的視窗全關閉,再開啟,發起相同的請求時,就是本文所闡述的,是不同的session,但是它和session的生命週期是沒有關係的。

總結:

session機制是基於cookie機制的。session屬於伺服器端,而cookie屬於瀏覽器端。

當開啟乙個瀏覽器對伺服器做出請求時,伺服器會先在請求中找是否存在名為sessionid的cookie。如果沒有,則在伺服器端建立乙個session,並將生成的sessionid放於cookie中,響應給瀏覽器。如果存在該cookie,則在服務端根據sessionid找session,找到則使用此session,沒找到則表明session過時了,再建立乙個新的session。

由於存放sessionid的cookie屬於瀏覽器端的,所以不同的瀏覽器中cookie存放的sessionid不同,也就是說,不同的瀏覽器訪問的伺服器時,session是不同的。

預設情況下,瀏覽器關閉,cookie消失。session預設存活30分鐘,可以呼叫方法設定存活時間或在web.xml中配置。

session小知識點

1 session生命週期 建立時 第一次訪問建立request.getsession 開始 銷毀 在沒有使用30分鐘後自動銷毀 2 在web.xml中控制session有效時間10 意思就是10分鐘後銷毀 3 用 銷毀 session.invalidate 4 在建立session時會自動生成乙個...

Cookie和Session的知識點

b 一 cookie b size medium 1.cookie在伺服器端建立 2.cookie儲存在瀏覽器端 3.cookie的生命週期可以通過cookie.setmaxage 2000 單位為秒 設定,如果不設定或者設定為負數,則預設為會話級別,當瀏覽器關閉時就消失。4.cookie可以被多個...

關於TCP IP知識點

資料在傳送時是資料從應用層至物理層的乙個打包的過程,接收時是資料從物理層至應用層的乙個解包的過程,從功能角度可分為三組,1 2層解決網路通道問題,3 4層解決傳輸問題,5 6 7層處 理對應用程序的訪問。從控制角度可分為二組,第1 2 3層是通訊子網層,第4 5 6 7層是主機控制層。a 類 1.0...