JavaWeb基础: 会话技术简介

时间:2023-12-22 09:05:02

会话技术

用户使用Web应用的过程实际是调用了一系列的Servlet来组合处理请求,从而完成整个业务流。不同Servlet组合起来为用户服务的时候就会遇到一个数据共享和传输的问题,如何让多个Servlets能识别用户?能否用request或者是context来保存attributes从而传递属性?

  • 用request.getRequestDispacther(url).forward(request,response), 要求servlets业务流连续不能断裂,即用户一购物就立即结账
  • 用context 保存attributes会有线程问题,多个用户使用同一个servlet处理请求会造成数据问题

JavaWeb基础: 会话技术简介

为了解决不同Servlet数据共享的问题产生了会话技术,JavaWeb有两种会话技术:cookie和session,这两种技术的核心区别是cookie把客户信息存储在客户浏览器上,session把客户信息存粗在服务器上:

  • Cookie,WebServer将生成的客户数据存储在浏览器端,浏览器在发送请求时将cookie信息加入http header发送给Server,Server根据不同的cookie进行不同的处理。
  • Session,WebServer为每个客户的浏览器建立一个独享的session对象存储客户数据,并且将sessionid回送给客户端浏览器,客户在发起请求时带着session,Server根据sessionid进行不同的处理。
  • 淘宝和博客园用的都是cookie,cookie把数据都存在浏览器端,对服务器磁盘的压力小,但是每次请求要携带大量的数据,对网络带宽的要求高。

Cookie交互流程

JavaWeb基础: 会话技术简介

程序实现技术点

  • Browser最多存30个Cookie,每次浏览记录应该更新Cookie,而不是新增Cookie
  • 浏览历史应该存最近浏览的Cookie

首页Servlet

  • 显示商品列表
  • 显示浏览历史

查看详情Servlet

  • 显示商品详情
  • 更新Cookie并且回写Cookie信息给浏览器