jsp - 如何验证/无效 session jsp/servlets?

标签 jsp session servlets invalidation

当用户成功登录时,我在我的 servlet 中打开了 session :

HttpSession session = request.getSession(true);
session.setAttribute("name", name);

然后我在 logout.jsp 中写了终止 session :
<%session.invalidate();%>

要检查 session 是否有效,我正在这样做:
HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");

但它不起作用,即使在 session.invalidate 之后我也使 session 有效。
有谁明白我哪里做错了?

最佳答案

您应该调用 session.getSession(false) - 如果没有当前 session ,则返回 null。

根据 docs

HttpSession#getSession(boolean create) - create - true to create a new session for this request if necessary; false to return null if there's no current session.



所以 session 值检查的正确方法是 -
HttpSession session = request.getSession(false);
if(session!=null)
  session.setAttribute("name", name);

一旦你使 session 无效 -
HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();

关于jsp - 如何验证/无效 session jsp/servlets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14445024/

相关文章:

java - org.springframework.context.NoSuchMessageException : No message found under code 'Size.userForm.username' for locale 'en_US'

jsp - 在 Struts 1.3 中将数据从 Action 传递到 view(jsp) 的最佳实践是什么?

codeigniter - 上游太大 - nginx + codeigniter

php - 如何在wordpress中进行 session 登录

java - SocketTimeoutException 和 Jetty 的问题

java - JSP、JavaScript 中的可选表

java - Servlet 问题 - 资源不可用

c# - 在 Azure 服务总线上调用 Abandon 会将消息重新排队到队列的后面而不是前面

java - 使用基于不兼容的 Servlet API 版本的 Spring Boot 版本会导致问题吗?

java - 部署时出现 LifecycleException