Web应用程序状态跟踪

状态跟踪:

        http协议是一种无状态的协议,当请求和响应完成后会断开连接,以释放服务器内存资源。所以服务器无法保存客户端的状态,服务器会认为每次请求的客户端都是新用户。但是很多时候我们需要得到客户端的状态,完成一系列的上午活动,这时就需要状态跟踪

状态跟踪由四中解决方案:

  1. 隐藏表单hidden
  1. Cookie
    • 流程:客户端访问服务器,服务器调用response.addcookie()方法。产生响应时,会产生set-cookie响应头,将cookie文本发给客户端,客户端会将cookie文本保存起来。当客户端在次请求服务器时,会产生cookie请求头,将之前服务器发送的消息,在发送给服务器。服务器就可以根据cookie信息跟踪客户端状态
    • 分类:
      • 存放在客户端浏览器的缓存中。浏览器不关闭,cookie信息一直存在,浏览器一旦关闭cookie消失
      • 存放在客户端的文件中,并可以设置cookie的过期时间。有效时间之类,即使浏览器关闭,也可以将cookie信息发送给服务器。超过有效时间,cookie消失
      • Cookie信息是以文本方式存放于客户端的,容易引起一些安全隐患,所以不要把隐秘信息以cookie方式保存
  2. Session
    • 流程:客户端访问服务器,服务器产生调用request.getsession()产生session对象。用于跟踪用户的状态。同时,给session对象分配一个唯一标识。为了管理session对象,所以以sessionId为键,以session对象为值,封装为map集合;产生响应时,将sessionIDcookie方式发送给客户端,客户端存放在客户端浏览器的缓存中。当客户端再次请求服务器,会将sessionIDcookie请求头的方式发送给服务器。服务器得到sessionID后,从map集合中得到session对象,从而跟踪状态;一个客户端只有一个session
    • 常见方法:
    • Session时服务器端用于保存客户端相关状态对象。由于http协议是无状态协议,所以客户端是否关闭浏览器,服务器并不知道。这就是意味着,客户端即使关闭浏览器下线,服务器也会一直保持session对象。这样会极大的耗费服务器的内存资源。所以服务器应该即使清理过时的session,以释放服务器的内存资源
    • Session的销毁方式有三种:
      • 设置超时时间
      • 调用session对象的invalidate(),强行关闭
      • 应用服务器崩溃
  3. URL重写
    • 当客户端禁用了cookie后,服务器发送给客户端的sessionID,客户端就不能通过cookie方式进行保存。那么客户端请求时,也不能将sessionID,以cookie的请求头方式提交给服务器。服务器得不到sessionID,也就无法取出session对象,从而不能跟踪状态。
    • 解决方案:在URL后面,强行附加sessionID<a href ="lovobook/writeURL;jsessionid=…….>click</a>这样,客户端无论是否禁用cookie,服务器都可以得到sessionID,从而跟踪状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值