java - request.getSession 的问题

标签 java servlets

我有一个 servlet LogMeOut.java,我在其中编写以下代码:

HttpSession session = request.getSession(false);
if (session != null){
   //statements to delete my cookies //
   session.invalidate();
}

我的问题是,当我第一次从 jsp 调用 LogMeOut 时,它给出了一个没有 session 的请求对象。所以我的 session.invalidate 不起作用。 但是,如果我返回到我的 jsp,然后调用相同的 LogMeOut,这次请求对象包含正确的 session 并且它可以工作。 知道为什么吗?或者我应该从哪里开始寻找?

最佳答案

如果您在没有现有 session 的请求上调用 getSession(false),则它将返回 null。这是expected, documented behaviour .

如果您调用 getSession(true) 或仅调用 getSession(),那么如果不存在 session ,则会创建一个 session 。

执行 JSP 通常也会自动创建一个 session ,因此下次执行代码时,就会出现一个 session 。

但是,如果您想要做的只是使现有 session 无效,那么您的代码对我来说看起来不错 - 不需要创建一个 session 来立即使其无效。

关于java - request.getSession 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4194006/

相关文章:

java - 如何在java中访问或显示ftp服务器上可用的文件列表

java - AWS Elastic BeansTalk Nginx 超时 504 错误网关 - Java Servlet AsyncContext

Java - 换行循环

java - 使用java中的树形图查找字符串中字符的频率时出现错误

java - Hibernate 忽略列(如果不存在)

java - 检查 firebase 数据库中的 url

java - 正在从 tomcat 服务下载部分文件

java - 如何使 JSP 函数仅在调用时运行?

java - 让 PDF 显示在 HTML 中,而不是使用 Adob​​e 加载或加载到单独的窗口中

jsf - 如果我添加 Deltaspike,RequestDispatcher#forward 会重定向而不是转发