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

时间:2013-01-21 18:33:04

标签: jsp session servlets invalidation

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

2 个答案:

答案 0 :(得分:24)

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

根据docs

  

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

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

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

一旦你使会话无效 -

HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();

答案 1 :(得分:-1)

验证会话

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

要使其无效,您需要执行

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

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