一尘不染

如何验证/无效会话jsp / servlet?

jsp

用户成功登录后,我在servlet中打开了会话:

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

然后我写了logout.jsp来终止会话:

<%session.invalidate();%>

要检查会话是否有效,我正在这样做:

HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");

但是它不起作用,即使在session.invalidate之后,我也正在使会话有效。有谁知道我在哪里做错了?


阅读 261

收藏
2020-06-08

共1个答案

一尘不染

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

根据文档

HttpSession#getSession(boolean create)-create-
如果需要,则为该请求创建一个新会话;为true;如果没有当前会话,则返回false。

因此,会话值检查的正确方法是-

HttpSession session = request.getSession(false);
if(session!=null)
  session.setAttribute("name", name);

并且一旦您使会话无效-

HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();
2020-06-08