記:爲何我設置了session爲永久保存,但是並沒有什麼卵用

在重啓瀏覽器的情況下,其實不論你講session的時間設置爲多久,都無法無法獲取相同的session。這個時間指的是session值在內存中保存的時間,並不是sessionid的時間。

    HttpSession session = request.getSession();
    session.setAttribute("list", list);
    //session設置爲永久
    session.setMaxInactiveInterval(-1);

因爲,默認情況下,session的id會存到cookie中,返回給瀏覽器,但是這個cookie的有效時間爲,關閉瀏覽器前有效
因此,重啓瀏覽器就無法獲取相同的sessionid,也就無法獲取相同的session。

這裏寫圖片描述

//如果要獲取相同的session,那你必須將sesion的id存到cookie當中,設置cookie的時間,這樣就能獲取相同的session了

    Cookie cookie = new Cookie("JSESSIONID", session.getId());
    cookie.setMaxAge(60*60);
    response.addCookie(cookie);

這裏寫圖片描述

總結:

session的兩個時間:
1,session值的時間,你設置session的時間就是這個session值存在服務器中的保存時間。
2,JSESSIONID的時間,這是個cookie,如果你不對sessionid進行設置,拿他默認就是瀏覽器關閉前有效。
如果想讓session在瀏覽器關閉後仍然爲同一個session,那就得將JSESIONID放到cookie當中,修改他的保存時間。
發佈了49 篇原創文章 · 獲贊 25 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章