概念
Cookie
- Cookie的作用?
Cookie可以让服务器程序跟踪每个客户端的访问。
- “Set-Cookie” 响应头,各种字段
- Tomcat 如何创建 Set-Cookie 响应头?
- 使用Cookie的限制
浏览器对Cookie的存储都有一些限制,每个域名下的数量限制和总大小限制。
Session
-
Session的作用?
Cookie可以让服务器程序跟踪每个客户端的访问,但每次客户端的访问都需要传回这些Cookie,如果Cookie很多,则增加了客户端与服务端的数据传输量,而Session的出现正是为了解决这个问题。每一次交互时,只要传回一个ID,这个ID是客户端第一次访问服务器时生成的,而且每个客户端是唯一的,在Servlet容器里,这个ID通常是Name为JSESSIONID的一个Cookie。
-
Session基于三种方式工作
URL Path Parameter
Cookie
SSL -
Session的第一次创建是通过触发 request.getSession() 方法。
-
Tomcat中的Session 持久化
当Servlet容器关闭时,StandardManager类会调用unload方法将sessions集合中的StandardSession对象写到“SESSIONS.ser” 文件中。注意关闭容器时必须调用Servlet容器的stop和start命令,而不能直接kill进程。
如果不希望使用这个特性,在conf/context.xml中配置<Manager pathname="" /> 即可。 -
Session对象的有效期设置
- Web容器级别.
conf/web.xml <!-- 这里是以分钟为单位的,默认是30分 --> <session-config> <session-timeout>30</session-timeout> </session-config>
- webapp级别
在webapp中的 WEB-INF/web.xml <!-- 以分钟为单位 --> <session-config> <session-timeout>30</session-timeout> </session-config>
- 硬编码在应用程序代码中
session.setMaxInactiveInterval(30*60);//以秒为单位
以上设置为-1即session不过期。
参考资料
- 《深入分析Java Web技术内幕 修订版》
- Tomcat设置session超时的几种方式 link
网友评论