会话跟踪

2 篇文章 0 订阅
1 篇文章 0 订阅

         会话跟踪,顾名思义,跟踪会话。从字面理解,就是通过一定手段保持多个会话场景中的信息传递或关联。在web开发中,我们经常遇到这样一类问题,如何在多次http请求之间传递或共享一些数据?其实这就涉及到简单的会话跟踪技术,而解决这种问题的一种方案可称之为会话跟踪的一个实例运用。

        所谓会话跟踪就是指维护多个web请求之间状态的一种机制,它是用来在和客户端和服务器之间保持状态的一种解决方案。实现会话跟踪主要有两种方案:一是让客户端每次发起请求时标识自己,然后从服务器存储并获取与本客户相关的数据;二是向客户发送数据,并让客户发起请求时把数据送回;这样就会保证在多次请求中客户端与服务器端数据操作的一致性。在实际中,通常会有以下四种方式实现会话跟踪技术:


隐藏表单域:这是一种比较简单且常用的方法,即将会话ID或能关联前后多次请求的数据存放在页面的隐藏域里,使得这些数据能在多次请求中进行传递从而达到会话的跟踪的目的。

保存cookie:cookie是一种通过客户端保持状态的方案,服务器在一个应答首部将一些能保持多次请求数据一致的信息以键值对的形式传递给浏览器,浏览器将这些信息保存在cookie里,在cookie还没过期的情况下,浏览器再次请求服务器时,会自动的带上这些特殊的信息,服务器在接收到客户端的请求后,通过分析存放在请求头的cookie信息,从而动态的生成客户端相应的内容。一般Cookies一般不多于4KB,且用户的敏感信息如信用卡账号密码不应该保存在Cookies中。

URL复写:url复写是在客户端与服务器端交互中,将会话ID以问号传参的格式传递至服务端,服务器可从URL中截取当前session ID,通过sessionID将请求与会话关联起来,然后在访问会话数据的时候,JSP页面所进行的处理方式就和使用cookie跟踪会话id时所使用的方式完全相同。所以sesssion的实现要依靠cookie或URL复写技术。如果想为不支持cookie的浏览器提供会话跟踪,就必须使用<c:url>行为对应用程序中的所有URL进行复写。这意味着应用程序中的所有页面(至少是那些带有对其他页面引用的页面)都必须是JSP页面,这样页面引用才能以动态方式进行编码,如果遗漏了一个ur,那么服务就会失去对会话的跟踪。

session 机制:session创建于服务器端程序运行的过程中,在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而得到该会话相关数据。传递sessionID常通过cookie和URL复写技术,大部分容器都支持这两种技术。服务器无法分辨用户是否关闭了浏览器,因此关闭浏览器意味着与先前的会话关联的所有会话数据都保留在服务器上,直到会话超时,服务器销毁会话对像。


        综上所述,HTTP请求是一种无状态的连接协议,为了保持我们一次业务逻辑完整的会话,我们必须采取一定的技术实现客户端与服务器之间的交互过程中会话状态和信息的一致,实现会话跟踪的技术有很多种,但究其本质通过cookie和session技术的运用。


参考文献:

http://blog.sina.com.cn/s/blog_5990faac0100dnfx.html

http://blog.163.com/xiao_mege/blog/static/72942753201012394736369/

http://www.cnblogs.com/kkgreen/archive/2011/04/16/2018492.html

http://wenku.baidu.com/link?url=zHOiyLaR0DNeERVyRw0LgVYu7VEX12MNkvDUmcIxyaQId3bDmJLxxybRt2ras3lWY0M6GlxK6yxBSSMYHQqxO9Y1i1uZ88-E8VATe9yt27q

7q

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值