我希望浏览器在浏览器重启后恢复我的Web应用程序会话。 我使用以下代码来执行此操作:
HttpSession browserSession = request.getSession();
Cookie cookie = new Cookie("SESSION", browserSession.getId());
cookie.setMaxAge(Integer.MAX_VALUE);
response.addCookie(cookie);
在创建上述SESSION cookie之前,运行我的应用程序时已存在SESSION cookie。
只有当我将其名称命名为“SESSION”时才会恢复浏览器会话,如果我使用其他名称命名,则会创建cookie并且即使我重新启动浏览器但仍未恢复应用会话,它仍然存活。
最初我尝试获取并设置现有的“SESSION”cookie值和最大年龄,但它不起作用。 如果我使用上面的代码但是有2个“SESSION”cookie,我可以恢复浏览器会话。 有没有办法只保留1个“SESSION”cookie? 或者我的方法是错的?
答案 0 :(得分:0)
你的方法是对的。不要担心重复的cookie,因为会自动删除浏览器会话。而另一个(您将年龄设置为Integer.MAX_VALUE
)将保留在cookie数据库中。
重新启动浏览器后再次访问该站点时,它只有1个SESSION cookie,服务器肯定会分配给定id的特定会话。
在Apache Tomcat 8.0中测试