用户成功登录后,我在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之后,我也正在使会话有效。有谁知道我在哪里做错了?
您应该调用session.getSession(false)-如果没有当前会话,则返回null。
根据文档
HttpSession#getSession(boolean create)-create- 如果需要,则为该请求创建一个新会话;为true;如果没有当前会话,则返回false。
HttpSession#getSession(boolean create)
因此,会话值检查的正确方法是-
HttpSession session = request.getSession(false); if(session!=null) session.setAttribute("name", name);
并且一旦您使会话无效-
HttpSession session = request.getSession(false); if(session!=null) session.invalidate();