Web应用程序状态管理

状态跟踪:

由于http协议是一种无状态的协议,当请求和响应完成后,连接会断开,以释放服务 器的资源。这时每次请求到达后,服务器都会认为是新用户,这就是无状态。但是很多 时候,服务器又需要保存客户端的状态进行一些商务活动,如:用户的登录、购物车信 息。这时就需要状态跟踪。

状态跟踪的方式:

隐藏表单

2 cookie

3 session

4 url重写

3 cookie工作流程:

客户端访问服务器,服务器调response.addCookie(),那么就会产生set-cookie响应头,将cookie对象中封装的信息以键值对文本方式发送给客户端。客户端再次请求,就会将之前服务器给客户端的cookie信息再次请求头的方式发给服务器,以跟踪状态。

Cookie分两种:

放置在客户端浏览器缓存中,当浏览器关闭,cookie消失。

放置在客户端文件中,当浏览器关闭,cookie不会消失,只有过期时间到了,才会消 失。(设置时间  setMaxAge(),里面参数为秒)

4 Session的工作流程:

当客户端访问服务器,服务器调用request.getSession().产生一个httpSession对象,用来保存客户端信息。一个用户就分配一个session对象。同时给该session对象产生一个唯一标识:sessionId.然后以sessionId为键,以session对象为值加入一个map 集合。产生响应信时会将时,会将sessionIdset-cookie响应头的方式发送给客户端。当客户端再次请求,会将sessionIdcookie请求头的方式再次发送给服务器,服务器根据sessionId找到对应的session对象,从而跟踪状态。

 

5 request.getSession()有一个重载方法request.getSession(boolean),当boolean变量为true,表示如果没有当前会话,创建一个新的会话对象。如果有当前会话,直接取出来。当boolean变量为false,表示有当前会话,直接取出,没有当前会话,返回nullrequest.getSession()等价于request.getSession(true)

HttpSession session=request.getSession()

//session中封装数据,作用范围在一次会话中

session.setAttribute(“aaa”,”111”);

6 session是服务器的对象,当客户端浏览器关闭并不意味session消失。

7 session的销毁方法有:

1)session超时。通过设置超时时间来销毁session,如果在指定时间之内,session有效, 超过时间,服务器会认为客户端下线,就会将session对象销毁,以释放服务器资源。

session.setMaxInactiveInterval()。如果为-1,就永不销毁。

还可以在web.xml中设置。

 <session-config>

        <session-timeout>30</session-timeout>

 </session-config>

以分钟为单位。

2)调用invalidate(),强行销毁session

3)服务器崩溃或重新部署

8 sessioncookie区别:

1)session是服务器对象;cookie是一段文本

2)Session数据放在服务器;cookie数据放在客户端

3)Session可以封装对象;cookie只能封装文本。

9 url重写:

Session对象通常需要使用cookie来传输sessionId,一旦客户端浏览器将cookie禁用,这时sessionId就不能从客户端再传递给服务器了。这时服务器就认为客户端是新用户,不能再跟踪状态。

10 url重写原理:

sessionId强行附加在url后面,这样就算客户端禁用cookie,服务器同样能得到sessionId从而能在客户端禁用cookie的情况下,跟踪状态。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值