【发布时间】:2010-12-19 20:19:20
【问题描述】:
HttpSession 会话 = request.getSession(true); 和 HttpSession 会话 = request.getSession(); 如果不存在,两者都会创建一个新会话。
我的问题是,如果会话已经存在,我想使会话无效(),然后创建一个新会话。
我有可能..我的意思是有什么办法可以实现这个..??
【问题讨论】:
HttpSession 会话 = request.getSession(true); 和 HttpSession 会话 = request.getSession(); 如果不存在,两者都会创建一个新会话。
我的问题是,如果会话已经存在,我想使会话无效(),然后创建一个新会话。
我有可能..我的意思是有什么办法可以实现这个..??
【问题讨论】:
首先杀死你的旧会话
session.invalidate();
然后用
重新打开它HttpSession session = request.getSession(true);
不工作?
【讨论】:
首先执行session.invalidate();,如有必要,然后执行response.sendRedirect("url"); 到url,其中您可以执行request.getSession(); 以获得新会话。
请注意,这种方法不能保证在 JSP 文件中工作,仅仅是因为在大多数情况下响应已已经提交(因此容器无法设置 jsessionid cookie 的新值在响应标头中)。您确实需要在 Servlet 或过滤器中执行此操作。
也就是说,您究竟为什么要使会话无效,然后在同一个请求中立即获得一个新会话?这听起来像是针对某个问题的解决方法,可能有更好的解决方案。
【讨论】:
这个怎么样?
HttpSession session = request.getSession(false); // Will not create a new session.
if(session!=null)
{
session.invalidate();
}
session = request.getSession(true);
【讨论】: