假设我有一个web应用程序,其中包含在web.xml中定义的servlet。
然后我将它部署在Tomcat上。
然后我打开浏览器并转到此servlet的链接,调用它。
然后我关闭浏览器窗口。
会话的行为?在这种情况下如何创建,销毁?
如果此servlet与所有Web应用程序“分离”,并且仅使用post& get,所以它根本不需要Session,如果在doGet(),doPost()的末尾使用Session.invalidate?
答案 0 :(得分:3)
servlet容器通常使用(1)HTTP cookie或(2)在每个URL中添加额外参数jsessionid
来跟踪会话。
当用户访问此站点并且不存在会话时,将为他创建一个新会话,包括相应的HttpSession
。如有必要,可能会将用户重定向到登录页面。
Session.invalidate
的效果基本上是:“丢弃该用户的当前会话。如果他访问该网站上的另一个页面,将创建一个新会话。”
到目前为止,我知道会话失效通常用于实现注销功能。
我不会在你的“分离”servlet中调用Session.invalidate
,它会干扰其他页面。基本上,您不关心servlet中的会话,无论如何都不要使用它。
也许还要看看有关disabling the session的这个问题。
答案 1 :(得分:3)
然后我关闭浏览器窗口。 会话的行为如何?在这种情况下如何创建,销毁?
您是否询问如果在客户端收到回复之前浏览器已关闭会发生什么?
在这种情况下,仍会在服务器上创建Session
。它将持续指定的时间段,然后过期。
您浏览器的下一个请求将创建一个新的Session
。
在此处详细了解:http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html
关于session.invalidate - ewernli已经回答。