• 基础回顾: 关于Session的一些细节


    1 session是服务端技术, cookie是客户端技术

    2 默认情况下, 一个浏览器独占一个session对象, 也就是说, 开启两个浏览器进程, 它们之间使用的session不是同一个session

    3 通过一个浏览器进程产生出来的浏览器窗口, 这些窗口共享的是同一个session, 产生方式可以是点击出来的(target属性为_blank), 也可以是拖出来的

    4 IE8浏览器不管启动多少个浏览器进程, 共享的都是同一个session对象

    5 session.getSession()方法通过判断浏览器发送请求是否携带JSESSIONID来判断是否为浏览器创建session  // 待查看tomcat源码验证

    6 session的生命周期

      创建 - 调用getSession()方法且JSESSIONID不存在时

      销毁 - session对象在服务器中驻留30min内没有被使用, 就会被销毁, 所以在手工设置JSESSIONID的cookie时, 若将cookie的超时时间设置为超过30min, 就没有意义了

    7 默认情况下, JSESSIONID的cookie有效时间为一个会话, 也就是说, 关闭浏览器之后, JSESSIONID的cookie就会别销毁, 服务器可以通过手工设置JSESSIONID的有效时间, 来防止用户错误操作关闭浏览器, 导致再次开启浏览器访问资源时, 丢失数据

    8 用户在web.xml文件中手工配置session的失效时间

    9 用户可以手工调用session.invalidate方法,摧毁session, 注意与移除session的removeAttribute方法区分开来

    10 如何做到一个session为一个浏览器的多次请求服务?

    服务器创建session出来后,会把 session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再
    去访问服务器时,都会带着session 的id号去,服务器发现客户机带session id过来了,就会使用内存中与之对应的
    session为之服务.

    11 如何做到一个session为多个浏览器的请求服务?

    服务器第一次创建session,程序员把sessionid号,手工以cookie的形式回送给浏览器,并设置cookie的有效期
    这样,即使用户的浏览器关了,开新浏览器时,还会带着sessionid找服务器,服务器从而就可以用内存中与之对应的
    session为第二个浏览器窗口服务.

  • 相关阅读:
    网络摄像头RTSP协议视频平台EasyNVR升级版本后如何迁移原版数据?
    ubuntu下安装dosbox
    动态数组
    C风格字符串
    指针
    数组
    bitset
    迭代器iterator
    vector
    string--getline(),cctype
  • 原文地址:https://www.cnblogs.com/shaohsiung/p/9547559.html
Copyright © 2020-2023  润新知