我遇到了java会话的问题。
我正在开发一个简单的Web应用程序,我必须使用会话和会话属性。一切都很好,直到我关闭浏览器。当我关闭浏览器时,JSessionId消失了。 这是我的代码:
request.getSession().setMaxInactiveInterval(30*60); //it's 30 minutes
request.getSession().setAttribute("someinteger", 10);
它工作得很好,但是当我关闭浏览器并重新打开它时,我找不到jsessionId(在关闭浏览器之前我可以在'localhost'部分找到它)。奇怪的是我仍然可以找到“someinteger”cookie。问题是什么?我做错了什么?
我也在使用它:link text,它显示JSESSIONID cookie到期:“SESSION”,“someinteger”在30分钟后到期
提前致谢。
答案 0 :(得分:4)
会话cookie在浏览器重新启动时不会持续存在。因此,重新打开浏览器时,JSESSIONID cookie将不存在。
答案 1 :(得分:1)
实际上,原因是web.xml中定义的会话超时可能仍设置为默认值:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
如果已将浏览器配置为(默认情况下都是这样),则会话cookie将在浏览器重新启动时保持不变。带有JSESSIONID的cookie不是浏览器的特殊cookie,它只是另一个cookie。
如果您查看cookie,您可以看到它何时设置为过期。 Cookie到期和持久性与会话超时无关。除了cookie是连接浏览器和seeion的东西。
如果cookie或会话丢失,则会话实际上会丢失。