在重启浏览器的情况下,其实不论你讲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当中,修改他的保存时间。