Servlet会话行为和Session.invalidate

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

然后我在Tomcat上部署它。

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

然后我关闭浏览器窗口。

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

如果这个servlet与所有的web应用程序“分离”,并且仅使用post&get获取参数,那么它根本不需要Session,如果在doGet(),doPost()的末尾使用Session.invalidate?

servlet容器通常使用(1)HTTP cookie或(2)在每个URL中添加额外的参数jsessionid跟踪会话。

当用户访问此站点并且不存在会话时,将为他创建一个新会话,包括相应的HttpSession 。 如有必要,可能会将用户重定向到登录页面。

Session.invalidate的效果基本上是:“丢弃该用户的当前会话。如果他访问该站点上的另一个页面,将创建一个新会话”。

到目前为止,我知道会话失效通常用于实现注销function。

我不会在你的“分离”servlet中调用Session.invalidate ,它会干扰其他页面。 基本上,您不关心servlet中的会话,无论如何都不要使用它。

也许还要看一下关于禁用会话的这个问题。

然后我关闭浏览器窗口。 会话的行为方式? 在这种情况下如何创建,销毁?

您是否询问如果在客户端收到回复之前浏览器已关闭会发生什么?

在这种情况下,仍将在服务器上创建Session 。 它将持续指定的时间段然后到期。

浏览器的下一个请求将创建一个新Session 。 在此处查看更多内容: http : //tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html

关于session.invalidate – ewernli已经回答了。