几种会话跟踪技术?

参考解答:

由于http请求的无状态性,导致请求与请求之间没有联系,所谓的会话跟踪,就是在同一个客户端的多次请求之间建立联系。

java 中有Cookie和URL重写技术可以实现会话跟踪。

如图所示:

  1. 浏览器发送第一次请求给localhost服务器后,服务器调用request.getSession()创建新的HttpSession对象,假设它的id=123
  2. 当这次请求返回响应时,会将一个名称固定为JSESSIONID,值等于123的会话Cookie,返回给浏览器
  3. 浏览器会存储localhost服务器的会话Cookie直到浏览器关闭
  4. 下次当浏览器再发送请求给localhost服务器时,会携带JSESSIOINID=123的会话Cookie,服务器根据它的取值找到正确的HttpSession对象,从而在两次请求之间建立了联系。

URL重写

有时候浏览器禁用了Cookie,仍希望能维持会话跟踪,这时候需要使用URL重写技术:

  1. 浏览器发送第一次请求给localhost服务器后,服务器调用request.getSession()创建新的HttpSession对象,假设它的id=123
  2. 当这次响应返回时,需要对页面中所有表单提交的路径超链接的路径之后都加上;jsessionid=123,生成这些路径后缀可以通过调用HttpServletResponse.encodeURL()来完成
  3. 当提交表单请求到达服务器后,服务器会解析请求地址后面;jsessionid=123部分,根据它找到正确的HttpSession对象
  4. 当点击超链接请求到达服务器后,服务器会解析请求地址后面;jsessionid=123部分,根据它找到正确的HttpSession对象

results matching ""

    No results matching ""