會話技術
1.Cookie
客戶端會話技術
數據存儲在客戶端,只能存String類型,並且大小有限制,一般為4KB,Cookie數量有限制(20個),不同瀏覽器不同;
一個Tomcat服務器中的共享問題:Cookies的獲取限制,通過setPath()設置訪問范圍限制,默認為當前虛擬目錄;
多個Tomcat服務器下的共享問題:通過setDomain()設置域名,如果一級域名相同,二級域名下的cookie是可以訪問到的;
Cookie的持久化存儲,setMaxAge() 設置存儲時間,如果不設置,默認關閉瀏覽器即刪除(整數:秒為單位,設置存儲時長;負數:默認值,即關閉刪除,可以不寫;0,刪除客戶端Cookie);
作用:一般用來存儲不敏感的信息,一般用來做服務器對客戶端的用戶識別;
注意事項:Tomcat8下不能存中文,無法存儲特殊的字符,如空格,需要URL編碼,URLENCODE的encode進行編碼,對應的是URLDECODE解碼
2.Session
服務器端會話技術
數據存儲在服務器端,以Cookie為基礎做客戶端識別;
HttpSession session = request.getHttpSession();
如果第一次訪問,客戶端Cookie中無JSESSIONID,即新生成一個session對象,存放到服務器中;
如果第二次訪問,請求對象中Cookie中含有JSESSIONID,服務器會返回對象客戶端的Session;
session的鈍化和活化,服務器正常關閉,會存放文件到Tomcat work目錄下,服務器再次啟動時,文件自動加載到服務器中,文件刪除;
Session的銷毀:
*.服務器關閉;
*.session對象調用invalidate()方法;
*.默認失效時間30分鍾,Tomcat 配置文件中可以配置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
作用:
1. session用於存儲一次會話的多次請求的數據,存在服務器端
2. session可以存儲任意類型,任意大小的數據
兩者區別:
1. session存儲數據在服務器端,Cookie在客戶端
2. session沒有數據大小限制,Cookie有
3. session數據安全,Cookie相對於不安全