• 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相对不安全
  • 相关阅读:
    大数据面经
    mysql复习(2)
    java容器
    内存管理
    垃圾收集
    输入/输出流
    排序算法的稳定性及其汇总
    java传值与传引用
    linux复习6
    linux复习5
  • 原文地址:https://www.cnblogs.com/hydc/p/16126863.html
Copyright © 2020-2023  润新知