假设我有一个 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/