1、当浏览器关闭后,服务器不关闭,两次获取到的Session是否是同一个?

默认情况下肯定不是同一个Session,因为浏览器关闭后带着Session响应头信息的Cookie就消失了


但是我们可以让Cookie持久化保存一段时间,这段时间内不管浏览器怎么关都没事

  1. Cookie cookie = new Cookie("JSESSIONID", session.getID());
  2. cookie.setMaxAge(60*60); //一小时内不管怎么关闭浏览器都可以获取到同一个session

2、浏览器不关闭,关闭服务器,两次获取到的session是同一个嘛?

不是同一个,因为服务器关闭后session对象就被销毁了,但是要确保服务器的数据不会丢失,那么如何确保数据不会丢失呢?

答:要完成对session的钝化与活化

session的钝化:

在服务器正常关闭前,将session对象序列化到硬盘上

session的活化:

在服务器启动后,将session文件转化为内存中的session对象

注意:Tomcat服务器自动完成对session的钝化与活化,而IDEA不行,但是没事,我们后期大多用Tomcat部署项目,所以不用担心这个问题。(Are you sure?)


3、session什么时候被销毁?

1、服务器关闭

2、session对象调用invalidate( )方法就会自己销毁自己

3、session默认失效时间:30分钟

  1. 但是可以自己修改失效时间,找到web.xml配置文件然后找到以下代码然后修改数字即可
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>