HTTP是“无状态”的协议,每读取一个页面都要建立一次单独的连接,服务器不会自动去维护客户的上下文信息,一般来说就算是支持持续性的HTTP连接的服务器也不会内建维护上下文信息。
没了上下文的支持,导致解决类似购物车这样需求难以实现。对于这类需求我们可以使用Cookie,URL重写,隐藏表单的形式来实现。但是使用这些实现都不自在。一般我们会使用HTTPSession来实现我们的这一需求。
首先,HttpSession对象存在于服务器端,它们不会在网络上来回传送,它们是通过某种后台机制,比如:COOKIE或URL重写自动与客户关联在一起,这些会话对象中拥有内建的散列表的支持,可以任意去存储任意数量的键与值。查找之前存储的值使用session.getAttribute("key");
如:
如果需要在系统中实现分布执行,需要对会话属性实现Serializable接口。
如果要废气这个会话,可以有3种选择。
[quote]1,只废气自己的会话。
removeAttribute("key");
2,使用invalidate。废气整个当前WEB应用会话。
3,调用logout将客户从WEB服务器中注销。[/quote]
没了上下文的支持,导致解决类似购物车这样需求难以实现。对于这类需求我们可以使用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种选择。
[quote]1,只废气自己的会话。
removeAttribute("key");
2,使用invalidate。废气整个当前WEB应用会话。
3,调用logout将客户从WEB服务器中注销。[/quote]
本文介绍HTTP作为无状态协议的问题,并探讨如何通过使用Cookie、URL重写等方法解决上下文缺失问题。重点讲解了利用HTTPSession进行会话管理的方法,包括会话对象的创建、存储及销毁过程。
3692

被折叠的 条评论
为什么被折叠?



