HTTP是“无状态”的协议,每读取一个页面都要建立一次单独的连接,服务器不会自动去维护客户的上下文信息,一般来说就算是支持持续性的HTTP连接的服务器也不会内建维护上下文信息。 没了上下文的支持,导致解决类似购物车这样需求难以实现。对于这类需求我们可以使用Cookie,URL重写,隐藏表单的形式来实现。但是使用这些实现都不自在。一般我们会使用HTTPSession来实现我们的这一需求。
HttpSession session=request.getSession();
首先,HttpSession对象存在于服务器端,它们不会在网络上来回传送,它们是通过某种后台机制,比如:COOKIE或URL重写自动与客户关联在一起,这些会话对象中拥有内建的散列表的支持,可以任意去存储任意数量的键与值。查找之前存储的值使用session.getAttribute("key");
如: HttpSession session=request.getSession();
User user=(User)session.getAttribute("id");
if(user=null){
user= new User();
user.setId(1);
session.setAttribute("User",user);
}
如果需要在系统中实现分布执行,需要对会话属性实现Serializable接口。 如果要废气这个会话,可以有3种选择。
引用
1,只废气自己的会话。 removeAttribute("key"); 2,使用invalidate。废气整个当前WEB应用会话。 3,调用logout将客户从WEB服务器中注销。
|