关于浏览器关闭后session是否被删除的问题

来源:互联网 发布:层次聚类算法 编辑:程序博客网 时间:2024/05/16 13:00

先上结论:session不会因为浏览器的关闭而消失!!!!!!

session的生命周期:

创建: 当某一用户调用了servlet的request.getsession(true)时,session被创建,并把session对象被保存在服务器中

销毁: 当发生以下三种情况时 session对象被销毁

                     (1)  用户距离上次发出请求的时间大于session的存活时间(session.setMaxInactiveInterval(interval))

                     (2)  调用session的 invalidate()方法

                     (3)  服务器关闭

http是无状态的连接,服务器并不知道浏览器什么时候关闭的,所以也不会根据浏览器的状态来做出相应

但为什么又会出现关闭浏览器后session被销毁的假象呢?

这是由于session是基于cookie实现的,session在被创建后,会生成一个唯一的sessionid返回给浏览器 并保存在浏览器的cookie中,

接下来客户再次调用getsession(),服务器便会从客户端发送过来的cookie中查找name为sessionid的cookie是否存在, 若是存在 则通过该cookie的值来找到用户之前创建的session,若是不存在则创建一个新的session.然而保存sessionid的cookie默认是会话级别的,是保存在浏览器的内存中的,当浏览器关闭时这个cookie也就消失了,所以再次打开一个新的浏览器 由于这个时候并不存在名为sessionid的cookie,所以服务器便会创建一个新的session,但是原来的session还是存在的!也就是说这时候服务器中一共存在两个session

0 0
原创粉丝点击