今天想和大家分享乙個關於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等到它的預設時間到之後,便會自動銷毀。
ps:當在同乙個瀏覽器中同時開啟多個標籤,傳送同乙個請求或不同的請求,仍是同乙個session;
當不在同乙個視窗中開啟相同的瀏覽器時,傳送請求,仍是同乙個session;
當使用不同的瀏覽器時,傳送請求,即使傳送相同的請求,是不同的session;
當把當前某個瀏覽器的視窗全關閉,再開啟,發起相同的請求時,就是本文所闡述的,是不同的session,但是它和session的生命週期是沒有關係的.
session和cookie 關閉瀏覽器後會怎樣?
session儲存在伺服器端,會一直存在,預設存在時間30分鐘 cookie儲存sessionid,伺服器會根據cookie中sessionid獲取session 兩種型別的cookie 不設定過期時間,則表示這個cookie生命週期為瀏覽器會話期間,只要關閉瀏覽器視窗,cookie就消失了。這種生...
關閉瀏覽器後Session失效原因分析
1.從伺服器的角度看 session的壽命週期預設是30分鐘,這裡指的是某個session物件在服 務器中的記憶體中的壽命。2.從瀏覽器的角度看 當我們的瀏覽器首次訪問伺服器的某個servlet的時候會建立乙個新的session物件 如果這個被訪問的servlet有獲取session物件的語句 後會...
關閉瀏覽器後,session是否還存在?
session是基於cookie的一種會話技術,資料存放存放在伺服器端。客戶端在cookie攜帶jsessionid tomcat伺服器生成 來訪問服務端,獲取對應jsessionid的session資料。session建立和銷毀 建立 呼叫request.getsesion建立 銷毀 伺服器關閉 ...