Java request.getSession(false)。注销后使不工作无效
我有一个带有tomcat、java、jsp和servlet的webproject。 如果我在webproject前端注销,我想销毁所有会话。但是下面的代码不起作用。我希望所有会话都被破坏,如果我注销,我必须在下一步中使用我的用户和密码进行身份验证。谢谢你的帮助Java request.getSession(false)。注销后使不工作无效,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我有一个带有tomcat、java、jsp和servlet的webproject。 如果我在webproject前端注销,我想销毁所有会话。但是下面的代码不起作用。我希望所有会话都被破坏,如果我注销,我必须在下一步中使用我的用户和密码进行身份验证。谢谢你的帮助 if(lstrAction!=null && lstrAction.equals(ApplicationConstants.LOGOUT)){ HttpSession session = requ
if(lstrAction!=null && lstrAction.equals(ApplicationConstants.LOGOUT)){
HttpSession session = request.getSession(false);
if(session != null){
session.invalidate();
session = request.getSession(false);
}
}
我已经调试了我的项目,发现在最后一行之后会话不为空。试试这段代码。这肯定对你有用 Cookie c[]=request.getCookies();if(c==null){response.sendRedirect(“index.jsp”);}else{session.removeAttribute(c[0].getValue());response.sendRedirect(“index.jsp”);}
在此,在会话失效后,您将重新分配会话。在这一点上,它不会为空。您需要执行空检查以查找会话是否为空。会话是否仍然包含存储在其中的所有变量?请检查此链接:
session.getId()
?最重要的是,在下一个请求中没有会话。正如@w4rumy所说,会话中是否也有paramaeters值,因为当您通过lat行提示会话对象时,它可能会创建一个空会话。为什么要调用会话。get(false)
两次?删除第二个调用并将会话
变量设置为null
。
session.invalidate();
session = request.getSession(false);