概念
Cookie
- Cookie的作用?
Cookie可以讓服務(wù)器程序跟蹤每個(gè)客戶端的訪問。
- “Set-Cookie” 響應(yīng)頭,各種字段
- Tomcat 如何創(chuàng)建 Set-Cookie 響應(yīng)頭?
- 使用Cookie的限制
瀏覽器對(duì)Cookie的存儲(chǔ)都有一些限制,每個(gè)域名下的數(shù)量限制和總大小限制。
Session
-
Session的作用?
Cookie可以讓服務(wù)器程序跟蹤每個(gè)客戶端的訪問,但每次客戶端的訪問都需要傳回這些Cookie,如果Cookie很多,則增加了客戶端與服務(wù)端的數(shù)據(jù)傳輸量,而Session的出現(xiàn)正是為了解決這個(gè)問題。每一次交互時(shí),只要傳回一個(gè)ID,這個(gè)ID是客戶端第一次訪問服務(wù)器時(shí)生成的,而且每個(gè)客戶端是唯一的,在Servlet容器里,這個(gè)ID通常是Name為JSESSIONID的一個(gè)Cookie。
-
Session基于三種方式工作
URL Path Parameter
Cookie
SSL Session的第一次創(chuàng)建是通過觸發(fā) request.getSession() 方法。
-
Tomcat中的Session 持久化
當(dāng)Servlet容器關(guān)閉時(shí),StandardManager類會(huì)調(diào)用unload方法將sessions集合中的StandardSession對(duì)象寫到“SESSIONS.ser” 文件中。注意關(guān)閉容器時(shí)必須調(diào)用Servlet容器的stop和start命令,而不能直接kill進(jìn)程。
如果不希望使用這個(gè)特性,在conf/context.xml中配置<Manager pathname="" /> 即可。 -
Session對(duì)象的有效期設(shè)置
- Web容器級(jí)別.
conf/web.xml <!-- 這里是以分鐘為單位的,默認(rèn)是30分 --> <session-config> <session-timeout>30</session-timeout> </session-config>- webapp級(jí)別
在webapp中的 WEB-INF/web.xml <!-- 以分鐘為單位 --> <session-config> <session-timeout>30</session-timeout> </session-config>- 硬編碼在應(yīng)用程序代碼中
session.setMaxInactiveInterval(30*60);//以秒為單位以上設(shè)置為-1即session不過期。
參考資料
- 《深入分析Java Web技術(shù)內(nèi)幕 修訂版》
- Tomcat設(shè)置session超時(shí)的幾種方式 link