Cookie和Session的區別和聯系


會話技術

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相對於不安全

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM