记:为何我设置了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当中,修改他的保存时间。

猜你喜欢

转载自blog.csdn.net/eternal1d/article/details/78002478