java - Servlet Session 行为和 Session.invalidate

标签 java session servlets

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

然后我将它部署到 Tomcat 上。

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

然后我关闭浏览器窗口。

Session 的行为如何?在这种情况下,它是如何创建、销毁的?

如果此 servlet 与所有 Web 应用程序“分离”,并且仅使用 post 和 get 获取参数,那么它根本不需要 Session,应该在 doGet() 结束时使用 Session.invalidate,doPost( )?

最佳答案

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

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

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

据我所知, session 失效通常用于实现注销功能。

我不会在您的“分离的”servlet 中调用 Session.invalidate,它会干扰其他页面。基本上,您不关心 servlet 中的 session ,您也不会使用它。

也许还可以看看这个关于 disabling the session 的问题.

关于java - Servlet Session 行为和 Session.invalidate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2879986/

相关文章:

java - 增强的 for 循环不会调用 arraylist 的重写方法。类转换异常

javascript - 从Javascript运行PHP文件来检查在线用户: says users who are not logged in are

java - 一遍又一遍地使用相同的 Hibernate Session 是一种好习惯吗

java - 传递给 servlet 的 JSP 表单值

java - 如何从 getServletContext().getContextPath() 返回域名

java - 创建一个包含相同值/对象的 n 个副本的数组?

java - SharedPreferences 不保存我的用户名

java - 只读实体第一次如何持久化

java - 我想从jsp上的 Controller 方法获取 session 值。有人可以帮我看看我该怎么做吗

jquery - 如何使用ajax调用从servlet获取arraylist数据到jsp