保存session id的几种方式:web
Session Cookie:浏览器
session用过SessionID来区分不一样的用户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,这称之为session cookie,以区别pesistent cookies(cookie),session cookie是存储于浏览器内存中的,并非写到硬盘上。服务器
1.何时建立HttpSession对象cookie
①是否浏览器访问服务端的任何一个JSP,服务器都会当即建立一个HttpSession对象呢?不必定。session
1.对于JSP:spa
1)若当前的JSP是客户端访问的当前WEB应用的第一个资源,且JSP的page指定的session属性值为false,则服务器就不会为JSP建立一个HttpSession对象。xml
2)若当前JSP不是客户端访问的当前WEB应用的第一个资源,且其余页面已经建立一个HttpSession对象,而不会建立一个新的HttpSession对象对象
2.对于Servlet:若Servlet是客户端访问的第一个WEB应用的资源,则只调用了request.getSession()或request.getSession(true)才会建立HttpSession对象
生命周期
②page指令的session="false" 究竟是什么意思?内存
> 当前JSP页面禁用session隐含变量,但可使用其余的显式的HttpSession对象
(3)在sevlet中如何获取HttpSession对象?
> request.getSession(boolean create):
create为false,若没有和当前JSP页面关联的HttpSession对象,则返回null;如有,则返回true
create为true,必定返回一个HttpSession对象。若没有和当前JSP页面关联的HttpSession对象,则服务器建立一个新的HttpSession对象返回,如有,直接返回关联的。
request.getSession()等同于request.getSession(true)
2.何时销毁HttpSession对象
(1).直接调用HttpSession的invalidate()方法:该方法使HttpSession失效
(2).服务器卸载了当前WEB应用。
(3).超过HttpSession的过时时间
session.getMaxInactiveInterval();获取过时时间默认1800s
》设置HttpSession的过时时间:session.setMaxInactiveInerval(5);单位为秒
》在web.xml文件中设置HttpSession的过时时间:单位为分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>
(4).并非关闭浏览器就销毁了session对象