今天写一个退出登录操作,用到了session.invalidate();
细究了下
public void invalidate()
将session无效化,解绑任何与该session绑定的对象。
在第一次创建一个会话时,服务器会创建一个session对象,同时会生成一个sessionId,并在此次响应中将sessionId 以响应报文的方式传回客户端浏览器内存或以重写url方式送回客户端,来保持整个会话。关闭此浏览器窗口,其内存中的sessionId也就随之销毁。
session.invalidate()是将session设置为失效,一般在退出时使用,但要注意的是:session失效的同时 浏览器会立即创建一个新的session的,你第一个session已经失效了 所以调用它的getAttribute方法时候一定会抛出异常。所以一般用在退出登录操作中。
/**
* 退出登录
*/
@RequestMapping(value = "/admin/logout")
public String logout(HttpSession session){
session.removeAttribute("user");
session.invalidate();
return null;
}
先把session的user用户移除了,然后再使用 session.invalidate();手动销毁session。