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为第二个浏览器窗口服务.