关闭浏览器时会话丢失
我设置了会话时间。
11520
每次当我关闭浏览器并通过调用servlet再次打开它时,我看到创建了新会话。 每次重新打开浏览器时,都可以从HttpSessionListener中执行的SessionCreated方法中看到。
我是tomcat / Java的新手,但如果我在ASP.NET环境中工作,我会解决它设置与会话名称相同的cookie。
在Tomcat中解决它的最佳实践是什么?
先谢谢你。
丹尼。
每次当我关闭浏览器并通过调用servlet再次打开它时,我看到创建了新会话。
这符合指定的行为。 会话cookie没有年龄,因此只要客户端打开了webbrowser实例,或者客户端没有按照服务器端的session-timeout
设置中的指定长时间访问网站,它就会存在。
你基本上想要一个比会话cookie更长寿的cookie。 您可以使用Cookie
API创建一个新的长寿命cookie,使用Cookie#setMaxAge()
设置其年龄,使用HttpServletResponse#addCookie()
将其添加到HTTP响应中。 在随后的HTTP请求中,您可以使用HttpServletRequest#getCookies()
确定cookie的存在。
顺便说一句,这不是Tomcat具体的。 您可以在每个其他servletcontainer上执行相同的操作。
我在类似的问题中发现,Servlet 3.0现在支持这个:
11520 11520
(有点晚了,但我希望这对其他人也有用)