在重啓瀏覽器的情況下,其實不論你講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當中,修改他的保存時間。