1、超时(一般服务器设置超时时间为30分钟)服务器会销毁session;
2、点击控制台的红色按钮异常关闭服务器要销毁session
3、手动调用session的invalidate方法session.invalidate();
注意如果服务器正常关闭不会销毁
服务器正常关闭不销毁session,session会存到我们的硬盘中,也就是我们正常的点击stop server()会在tomcat的work的Catalina\localhost\项目名称下面生成一个文件SESSIONS(执行序列化),当服务器再次启动的时候会加载此文件(反序列化),倘若没有实现序列化接口(Serializable)可能会报错因为序列化和反序列化会依据一个id:
private static final long serialVersionUID = 1L;
注意:
只有eclipse是点击红色的按钮停止服务器是非正常关闭服务器。在服务器上右键停止是正常关闭服务器。(点按钮直接就停了,右键的停止,在控制台上会打印信息的)
而idea这个工具吧,点击红色的按钮其实也是正常关闭服务器,idea里面就没有非正常关闭服务器。
按理说,正常关闭服务器,session会被序列化到磁盘上,不会被销毁,但在实际操作中,设置加载回session,但还是加载不回来了。