1.什么是Web应用程序状态跟踪?
http协议是一种无状态的协议,当请求和响应完成后会断开连接,以释放服务器内存资源。所以服务器无法保存客户端的状态,服务器会认为每次请求的客户端都是新用户。但是很多时候我们需要得到客户端的状态,完成一系列的上午活动,这时就需要状态跟踪
2.在客户端常用的跟中客户的4种方法:
1.html表单中加入隐藏字段,它包含用于跟踪客户状态的数据。
2.重写URL,使它包含用于跟踪客户状态的数据。
3.用Cookie来传送用于跟踪客户状态的数据。
4.使用会话机制。
如图可视:
Cookie
客户端请求服务器,服务器发送cookie信息给客户端。在产生响应时,会产生Set-cookie响应头,再该响应头中,以键值对方式描述cookie信息。响应信息到达客户端以后,会将cookie信息存储在客户端。当客户端再次发送请求时,会将之前服务器发送给客户端的cookie信息,在以cookie请求头方式发送给服务器。服务器得到的信息和发送的信息是一致的,就认为是同一用户。
Session
客户端访问服务器,服务器为了跟踪该用户的信息,为该用户产生一个session对象,同时为该session对象产生一个唯一标识sessionId。为了管理众多用户的session信息,以sessionId为键,以session对象为值,将session信息存放在Map集合中。在产生响应时,服务器将sessionId以Set-cookie响应头的方式发送给客户端。客户端再请求服务器时,会将sessionId再以Cookie请求头的方式发送给服务器。服务器得到sessionId后,从map集合中,取出session对象,从而跟踪状态。
URL重写
URL 重写是拦截客户端传入 Web 请求URL并自动将其定向到到规则指定的 URL 的过程。比如浏览器发来请求 http://blog.mocoder.com/hello.html ,服务器自动将这个请求中定向为http://blog.mocoder.com/test.do?method=hello。