服务器端 状态机制

     http协议是无状态协议,每次客户端通过浏览器和web服务器建立连接,然后发出请求,web服务器响应,然后断开连接,客户端再建立连接,发出请求,然后web服务器再响应,再断开连接,循环运行。

    在web应用中,有时候需要在各个页面之间跟踪用户状态,典型的比如购物车,通常采用服务器端session对象来实现。实现的原理:当需要开始维护用户状态信息的时候,在服务器端实例化一个session对象(在java中是httpsession对象),该对象通过属性sessionid(在java中是JSESSIONID)来唯一标识该对象,每个用户通过一个session对象在服务器端保存该用户一次会话期间的所有特定数据(从用户打开网站直到关闭浏览器的过程成为一次会话,期间如果用户跳转到其它网站浏览,则该session对象开始倒计时,超过30分钟后则自动销毁该session对象,会话结束,用户关闭浏览器,session对象不是马上销毁,而是仍然存在于服务器端,直到30分钟后timeout,设置这个timeout的时间也就是为了处理浏览器关闭后释放内存空间。) 。这个session对象包含了一个集合(在httpsession对象中是通过HashMap来实现的 )和用于操作这个session对象的一系列方法,主要是读写容器里面的数据的方法,该session对象就好像一个购物篮一样,你可以在各个web页面之间向该session对象中存入任何数据或者对象,然后在其它的web页面取出来。

    

   服务器创建session后,会马上在下一个response的时候将该session的id以响应头的形式发送给浏览器,例如:      Set-Cookie      JSESSIONID=F472BB74EFC997514D90094543BF59AE; Path=/t ;浏览器接受到该响应以后会从该响应头里面取出JSESSIONID=F472BB74EFC997514D90094543BF59AE,并且将该sessionid保存在客户端,以后每次请求时候,都将该sessionid作为request请求的头发送回服务器:Cookie      SESSIONID=FBCFD60D83CD26390BD1D2EC9E7AD295,服务器得到该sessionid后根据该id去查找session对象,从而就知道了该用户对应的session和该用户的会话信息。服务器只是在session创建后通过响应想客户端发送一次sessionid,然后,以后,每次请求客户端都会向服务器发回该sessionid以标识本次会话。

   现在重点谈一谈当服务器创建了session后,该sessionid是通过什么方式在客户端保存的。 最常见的方式是通过客户端的cookie保存。但是通过实验我发现不同的浏览器使用的策略是不同的。 首先,说说  firefox浏览器,默认设置下,firefox允许所有网站的cookie设置,这个时候访问服务器,

 

 

     最开始,我不清楚这个session对象究竟是什么时候在服务器端创建的,以为只要一打开web应用,在请求第一个web页面的时候就创建了,但实际上不是这样的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walkingmanc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值