我在小服务程序宣布会议开幕,当用户进行登录成功:
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)
-创建-真正创造必要时申请一个新的会话; 假返回NULL如果没有当前会话。
所以会话值检查的正确的方法是 -
HttpSession session = request.getSession(false);
if(session!=null)
session.setAttribute("name", name);
一旦你无效会话 -
HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();
为了验证会话
HttpSession session = request.getSession(true);
session.setAttribute("name", name);
以使它无效,你需要做的
session.removeAttribute("name");
session.invalidate();
但是,你需要保持一件事记住,对象可能变为无效,但这个亘古不意味着它会立即清洗,即使其所有属性消失有可能是sesssion对象将得到重用无效之后,我得到了相同的用户ID和创建时间。