session是基於cookie的一種會話技術, 資料存放存放在伺服器端。客戶端在cookie攜帶jsessionid(tomcat伺服器生成),來訪問服務端,獲取對應jsessionid的session資料。
session建立和銷毀
建立:呼叫request.getsesion建立
銷毀:伺服器關閉 , 會話超時(30分)
setattribute 存放的值, 在瀏覽器關閉後,還有沒有。 有!,就算客戶端把電腦砸了也還有。
為何關閉瀏覽器後,再次訪問會覺得session失效了呢,這裡的失效意思是session的資料丟失了?
其實這裡session資料並沒有丟失,只是關閉瀏覽器後,因為預設的cookie生命週期為瀏覽器的記憶體,即關掉瀏覽器之後cookie就失效了,此時jsessionid也就沒有了。再次訪問後,伺服器又生成乙個新的jsessionid,此時request.getsession()通過jsessionid獲取到的session就不是之前的session了。
解決:設定客戶端 jsessionid cookie的時間
cookie cookies = request.getcookies();
cookie cookie = cookieutils.findcookiebyname(cookies, "jsessionid");
cookie.setmaxage(60*60);
response.addcookie(cookie);
session和cookie 關閉瀏覽器後會怎樣?
session儲存在伺服器端,會一直存在,預設存在時間30分鐘 cookie儲存sessionid,伺服器會根據cookie中sessionid獲取session 兩種型別的cookie 不設定過期時間,則表示這個cookie生命週期為瀏覽器會話期間,只要關閉瀏覽器視窗,cookie就消失了。這種生...
關閉瀏覽器後Session失效原因分析
1.從伺服器的角度看 session的壽命週期預設是30分鐘,這裡指的是某個session物件在服 務器中的記憶體中的壽命。2.從瀏覽器的角度看 當我們的瀏覽器首次訪問伺服器的某個servlet的時候會建立乙個新的session物件 如果這個被訪問的servlet有獲取session物件的語句 後會...
瀏覽器關閉了是否session就自動消失了呢
在談論session機制的時候,常常聽到這樣一種誤解 只要關閉瀏覽器,session就消失了 其實可以想象一下會員卡的例子,除非顧客主動對店家提出銷卡,否則店家絕對不會輕易刪除顧客的資料。對session來說也是一樣的,除非程式通知伺服器刪除乙個session,否則伺服器會一直保留,程式一般都是在使...