Web应用程序状态管理

状态跟踪的方式:

1,隐藏表单

2cookie

工作流程:客户端向服务器发出请求,服务器调用response.addCookie()方法,附加cookie对象信息。产生响应时,会增加set-cookie响应头,在该响应头中描述cookie信息。当客户端再次向服务器发出请求时,会在请求信息中增加cookie请求头,将cookie信息再发送给服务器。服务器发现客户端发送给服务器的信息,和自己发送给客户端的信息一致,就认为是同一用户。

Cookie的分类:

(1)存放在客户端浏览器的缓存中,当浏览器一关闭,cookie消失;

(2)如果cookie设置了过期时间(setMaxAge(秒数)),cookie会存放在客户端的文件中。在过期时间内,浏览器可以一直读取cookie文件信息,发送给服务器

3session

工作流程:

客户端向服务器发送请求,服务器产生session对象用于跟踪用户的状态。为了标识不同的用户,服务器会给每个session对象分配一个唯一标识sessionID。然后,为了管理所有用户的session对象,服务器以sessionID为键,以session对象为值,封装成Map集合。

产生响应时,会将sessionIDset-cookie响应头的方式发送给客户端。客户端将sessionID缓存在浏览器。当客户端再次发送请求,会将sessionID再以cookie请求头的方式发送给服务器,服务器根据sessionID找到对应的session对象,从而跟踪状态。

4URL重写

由于cookie容易引起一些安全隐患。所以,有些用户出于安全考虑,可能会禁用cookie。但这样一来,如果使用session跟踪状态,客户端也无法将sessionID传递给服务器。这时,可以采用URL重写,将sessionID强行附加在URL后面,保证客户端禁用cookie时,服务器也能得到sessionID,从而跟踪状态。URL重写可以看做是session的一种补充。使用response.encodeURL(“url路径”)进行URL重写

 

 

 

 

Session的管理:

Session是服务器用于跟踪用户状态的对象,由于http协议是无状态的协议,当请求和响应完成过后连接会断开。这就意味着,客户端是否关闭浏览器,用户是否下线,服务器并不清楚。所以,如果session不及时清理,那么无效的.过时的session对象会极大消耗服务器内存资源

会话超时管理:

销毁会话三种简单方式:

——设置会话超时。

——在session对象上调用invalidate()方法。

——应用结束。

 

Sessioncookie的区别:

1.session是服务器端的对象,用户信息保存在服务器端。cookie信息保存在客户端。

2.Session可以绑定对象在会话范围内共享。而cookie只保存文本数据。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值