Servlet会话行为和Session.invalidate

时间:2010-05-21 06:27:11

标签: java session servlets

假设我有一个web应用程序,其中包含在web.xml中定义的servlet。

然后我将它部署在Tomcat上。

然后我打开浏览器并转到此servlet的链接,调用它。

然后我关闭浏览器窗口。

会话的行为?在这种情况下如何创建,销毁?

如果此servlet与所有Web应用程序“分离”,并且仅使用post& get,所以它根本不需要Session,如果在doGet(),doPost()的末尾使用Session.invalidate?

2 个答案:

答案 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已经回答。