Session

会话技术

  1. 会话:一次会话中包含多次请求和响应。
    • 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止
  2. 功能:在一次会话的范围内的多次请求间,共享数据
  3. 方式:
    1. 客户端会话技术:Cookie
    2. 服务器端会话技术:Session

Session

  1. 概念:服务器端会话技术,在一次会话的对此请求间共享数据,将数据保存在服务器端的对象中。HttpSession

  2. 原理:Session的实现是依赖于Cookie的

    服务器如何确保在一次会话范围内,多次获取的Session对象时同一个?

    • 第一次请求获取Session,没有Cookie,会在内存中创建一个新的Session对象(假设Session的id为xxx),然后响应:set-cookie:JSESSIONID=xxx
    • 之后的请求会带上这个cookie,例:cookie:JSESSIONID=xxx
  3. 细节:

    1. 当客户端关闭后,服务器不关闭,两次获取的Session是否为同一个?

      • 默认情况下不是
      • 如果需要相同,可以设置一个cookie,key为JSESSIONID,value为Session的id,让cookie持久化(setMaxAge方法)
    2. 客户端不关闭,服务器关闭后,两次获取的Session是否为同一个?

      • 不是同一个(服务器关闭后被销毁),但是要确保数据不丢失(Tomcat上部署的项目自动完成session的序列化和反序列化,idea中跑的项目因为work目录在重启时会被销毁然后新建,所以反序列没有效果)
        • session的钝化(序列化):
          • 在服务器关闭之前,将session对象序列化到硬盘
        • session的活化(反序列化):
          • 在服务器启动后,将session文件转化为内存中的session对象即可
    3. Session什么时候被销毁?

      1. 服务器关闭
      2. session对象调用invalidate()
      3. session默认失效时间 30分钟
        Tomcat配置文件web.xml选择性配置修改(D:\DevSoftware\apache-tomcat-9.0.62\conf\web.xml)
        <session-config> <session-timeout>30</session-timeout> </session-config>
    4. 特点:

      1. session用于存储一次会话的多次请求的数据,存在服务器端
      2. session可以存储任意类型,任意大小的数据
      • session与cookie对比
        1. session存储数据在服务器端,cookie存储在客户端
        2. session没有数据大小的限制,cookie有
        3. session数据安全,cookie相对不安全
posted @ 2022-04-10 17:54  Z_Y_L  阅读(34)  评论(0编辑  收藏  举报