Session生命周期:
创建:程序第一次调用getSession()方法,服务器创建session对象;
摧毁:Session对象到期(默认为30分钟不对其进行操作)。
- 可以在web.xml文件中<session-config>标签中配置session的生存时间;
- 还可以在程序中调用session.invalidate()方法将其摧毁。
内部实现原理简单描述:
session底层是根据cookie来实现的;
浏览器访问某个程序,服务器一旦创建session对象,会给这个对象一个id号以cookie的形式返回,客户机浏览器下一次带着cookie的值来找到对应的session对象;
但是返回的cookie没有有效期,默认一个会话的有效期,所以,一旦重启浏览器,cookie就会清空。
针对服务器创建的cookie没有有效期的问题,我们可以在程序创建好session对象后new cookie(“JSESSIONID”,session.getId())对象,设置它的有效期和路径(路径和服务器设置的cookie的路径一样),因为session的有效期(默认没有改过的情况下)为30分钟,所以设为30分钟。
这样我们就创建好了一个覆盖服务器的代表session对象的cookie。
注意:每次写完cookie,一定要记得回写给浏览器!!!(我刚开始学的时候总是会忘记)