14

当用户成功登录时,我在我的 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 之后,我也让会话有效。有谁知道我在哪里做错了?

4

2 回答 2

26

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

根据文档

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

所以会话值检查的正确方法是 -

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

一旦您使会话无效-

HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();
于 2013-01-21T18:41:39.307 回答
-1

验证会话

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

要使其无效,您需要做

session.removeAttribute("name");
session.invalidate();

但是您需要记住一件事,该对象可能会变得无效,但这并不意味着它将立即清除,即使在其所有属性消失后使其无效后,会话对象也可能会被重用,我得到了相同的用户 ID和创作时间。

于 2014-07-02T12:47:16.173 回答