Cookie与HttpSession

   首先http是无连接的协议,那么服务器就没有办法通过连接来跟踪会话;

   再来说说Cookie,Cookie是由Http协议制定的,里面存储的是服务端发给客户端的特殊信息,在将cookie保存在客户端,由客户端的浏览器去管理,并且cookie不跨浏览器,通信时cookie中的信息放在响应头(服务端响应)和请求头(客户端发起请求);

  在来说说会话,一个用户的所有操作应该都属于一个会话,我们要把a做的所有操作都放在一个会话中,但是http无连接协议,那么就无法通过连接来获取用户,看下面的例子:

    一个购物网站,我们先选择商品,放入在购物车,放入后,连接关闭,经过一系列的操作之后,我们要购买这件商品,这个时候服务器就不知道是谁要购买这个商品了,这个时候就需要找到一个办法,来知道这个操作是属于哪个session,而Cookie就为此而生;

看下图,引入cookie后:


通过cookie就可以很好的解决,而Cookie中有一个属性叫JSessionid,浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值,创建一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器,这个id就是身份标识,


  当你在第二次访问服务器的时候携带Cookie中携带JSESSIONID=ID的值,如果JSESSIONID的session已经销毁, 那么服务器就会重新创建一个新的session再返回一个新的JSESSIONID通过Cookie返回到浏览器;

这里值得一提的是,关闭浏览器并不会马上销毁session,session的销毁只能通过invalidate()和超时销毁;


猜你喜欢

转载自blog.csdn.net/qq_39512671/article/details/80388026
今日推荐