【JavaWeb】会话管理

  • HTTP的基本性质

    • HTTP是简单的
    • HTTP是可扩展的:HTTP headers让协议的扩展变得容易
    • HTTP是无状态的,有会话的:这意味着服务器不能记住之前的请求或连接状态。每个HTTP请求都是独立的,服务器无法识别该请求是否来自同一个客户端或与之前的请求有关。
  • Cookie

    • 由服务器发送到浏览器,并保存在浏览器端的一小块数据;
    • 浏览器下次访问该服务器时候,会自动携带该数据块,将其发送给服务器;
    • 如果设置了cookie的生存时间,cookie就会被保存到本地;如果没设置就会随着浏览器关闭消亡
  • Session

    • 存储在服务器端;
    • 可存储的数据块量更大;
    • 敏感信息存放在服务器更加安全;
    • 但会增加服务端的内存压力。
  • 为什么现在常用Cookie,而Session用的少了?

    • 在分布式服务器情况下,浏览器发送请求,服务器1比较空闲,服务器1为其创建了唯一的标识符sessionID,并将其通过cookie将sessionID发送给客户端;
    • 客户端随后发送sessionID访问服务器上的会话数据时,可能会将请求发送给服务器3;
    • 因此需要额外的session维护机制:
      • 粘性session:每次都用固定的一台服务器来处理,会破坏负载均衡;
      • 同步session:将session同步给所有的服务器,导致各服务器之间会产生耦合,降低性能;
      • 共享session:单独设立一台用于会话保持的服务器,将所有session保存在该服务器上,导致对该服务器的依赖性很强;

你可能感兴趣的:(java,java,spring)