关闭浏览器后,sessionId是否是之前的sessionId?

时间:2022-11-01 18:58:23


Session的创建:request.getSession();

Session的销毁:服务器关闭,或者会话超时(30min)

session.setAttribute()存放的值是否在关闭浏览器之后还存在呢,有,一直都存在。

为什么存在还访问session会失效呢?

 

因为session是基于cookie的一种会话技术,数据存放在服务端。客户端通过cookie携带的JSESSIONID(tomcat生成的),来访问服务端,来生成sessionId保存在浏览器。而关闭浏览器后,cookie清除了,不再是以前的JSESSIONID,服务端会重新生成新的sessionId。

解决办法:设置JsessionId的cookie时间:

          

Cookie[] cookies = request.getCookies();
Cookie cookie = CookieUtils.findCookieByName(cookies, "JSESSIONID");
cookie.setMaxAge(60*60);
response.addCookie(cookie);