美文网首页
关闭浏览器后Session就销毁了吗

关闭浏览器后Session就销毁了吗

作者: 米都都 | 来源:发表于2019-01-08 10:14 被阅读0次

答案

存在于浏览器上的唯一标识符JSESSIONID(sessionid)消失了,但是服务器中存放的sessionid并没有立马销毁。

分析

我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保存当前用户的状态信息,初学它的时候,认为Session的生命周期是从打开一个浏览器窗口发送请求到关闭浏览器窗口,但其实这种说法是不正确的!当一个Session开始时,Servlet容器会创建一个HttpSession对象,那么在HttpSession对象中,可以存放用户状态的信息,Servlet容器为HttpSession对象分配一个唯一标识符即Sessionid,Servlet容器把Sessionid作为一种Cookie保存在客户端的浏览器 中用户每次发出Http请求时,Servlet容器会从HttpServletRequest对象中取出Sessionid,然后根据这个Sessionid找到相应的HttpSession对象,从而获取用户的状态信息。

其实让Session结束生命周期,有以下两种办法:

  • 一个是Session.invalidate()方法,不过这个方法在实际的开发中,并不推荐,可能在强制注销用户的时候会使用;

  • 一个是当前用户和服务器的交互时间超过默认时间后,Session会失效。

我们知道Session是存在于服务器端的,当把浏览器关闭时,浏览器并没有向服务器发送任何请求来关闭Session,自然Session也不会被销毁,但是可以做一点努力,在所有的客户端页面里使用js的window.onclose来监视浏览器的关闭动作,然后向服务器发送一个请求来关闭Session,但是这种做法在实际的开发中也是不推荐使用的,最正常的办法就是不去管它,让它等到默认的时间后,自动销毁。那么为什么当我们关闭浏览器后,就再也访问不到之前的session了呢?其实之前的Session一直都在服务器端,而当我们关闭浏览器时,此时的Cookie是存在于浏览器的进程中的,当浏览器关闭时,Cookie也就不存在了。

其实Cookie有两种:

  • 一种是存在于浏览器的进程中;

  • 一种是存在于硬盘上。

而session的Cookie是存在于浏览器的进程中,那么这种Cookie我们称为会话Cookie,当我们重新打开浏览器窗口时,之前的Cookie中存放的Sessionid已经不存在了,此时服务器从tpServletRequest对象中没有检查到sessionid,服务器会再发送一个新的存有Sessionid的Cookie到客户端的浏览器中,此时对应的是一个新的会话,而服务器上原先的session等到它的默认时间到之后,便会自动销毁。

附加

  • 当在同一个浏览器中同时打开多个标签,发送同一个请求或不同的请求,仍是同一个session;

  • 当不在同一个窗口中打开相同的浏览器时,发送请求,仍是同一个session;

  • 当使用不同的浏览器时,发送请求,即使发送相同的请求,是不同的session;

  • 当把当前某个浏览器的窗口全关闭,再打开,发起相同的请求时,是不同的session。

相关文章

  • 关闭浏览器后Session就销毁了吗

    答案 存在于浏览器上的唯一标识符JSESSIONID(sessionid)消失了,但是服务器中存放的session...

  • express-session

    cookie是存储在浏览器上的,session是保存在服务器上的 session只要关闭浏览器就会销毁sessio...

  • 17.Session

    Session底层依然是Cookie.浏览器关闭就失效(会话Cookie). Session: 是一种服务端技术,...

  • Django - Cookie&Session

    获取cookie: 设置cookie: 这中设置cookie,关闭浏览器就失效了。 实例: 或者: session...

  • session对象的生存周期

    session对象的生存期限依赖: * 客户是否关闭浏览器。 * session对象是否调用invalidata(...

  • 本地存储localStorage与sessionStorage的

    localStorage关闭浏览器还存在,sessionStorage关闭浏览器后就消失了。用在会员登录后保存状态...

  • Cookie与Session

    Cookie 注意:Cookie中不能存储中文,存储在客户端 会话级Cookie默认,浏览器关闭Cookie就销毁...

  • Hibernate的缓存机制

    hibernate的一级缓存是session级别的,所以如果session关闭后,缓存就没了,此时就会再次发sql...

  • Session, cookie, JSESSIONID的理解

    Session: 是服务端和浏览器直接的会话,通常情况下,浏览器关闭,服务端和服务器的会话就结束了。浏览器发起请求...

  • 分布式session常见的方案

    cookie如果不设置过期时间的话,关闭浏览器就立马过期。 主要有以下四种方案: 将session数据保存在coo...

网友评论

      本文标题:关闭浏览器后Session就销毁了吗

      本文链接:https://www.haomeiwen.com/subject/nvrprqtx.html