Cookie和Session的知識點

2021-08-27 17:34:39 字數 2993 閱讀 3461

[b]一、cookie[/b]

[size=medium]1.cookie在伺服器端建立

2.cookie儲存在瀏覽器端

3.cookie的生命週期可以通過cookie.setmaxage(2000)(單位為秒)設定,如果不設定或者設定為負數,則預設為會話級別,當瀏覽器關閉時就消失。

4.cookie可以被多個瀏覽器共享

5.cookie如果重名,就會替換已存在的cookie值

6.乙個web應用可以有多個cookie,但在瀏覽器的臨時資料夾中只有乙個檔案

7.cookie存放的時候是以明文方式存放,因此安全較低,需要加密後再儲存

8.乙個瀏覽器最多放入300個cookie,乙個web站點最多20個cookie,而且乙個cookie大小 限制為4k

9.如果乙個web應用只有乙個cookie,則刪除該cookie後,在瀏覽器的臨時資料夾中的cookie檔案也會被刪除;如果乙個web應用中有多個cookie,刪除其中乙個cookie後,檔案不會被刪除,只刪除了該cookie的內容[/size]

[b]示例:[/b]

[b]二、session[/b]

[size=medium]1.session儲存在伺服器的記憶體中

2.乙個使用者瀏覽器獨享乙個session物件

3.session中的屬性預設生命週期是30分鐘。以tomcat為例,可以通過web.xml修改

位置:/tomcat/conf/web.xml

30對所有的web應用生效。

也可以在單個web應用修改web.xml

30如果與伺服器衝突,則以自己web應用設定為準

通過程式實現session.setmaxinactiveinterval(10)

4.session中可以存在多個屬性,屬性值可以為物件

5.如果名字重複,新值替換舊值

6.session週期是指發呆時間。如我們設定session時間10s,則在10s內,使用者沒有訪問,則session失效;如果10s內有訪問,則session重新計時;

7.如果重啟web伺服器,或者reload web應用,或者關閉機器,session失效。

8.通過session的方法invalidate()方法可以讓session中所有的屬性失效,常用於安全退出。

9.如果希望某個屬性失敗,則可以使用方法removeattribute(stirng name)方法。[/size]

[b]三、兩者比較[/b]

[size=medium]1.存在位置

cookie存在客戶端的臨時檔案

session存在伺服器的記憶體中

2.安全性

cookie是以明文方式存放在客戶端,安全弱,可以通過md5加密再存放

session是存放在伺服器記憶體中,安全性好

3.網路傳輸量

cookie會傳遞資訊給伺服器

session的屬性值不存在客戶端

4.生命週期

cookie的生命週期是累計時間,如果我們給cookie設定setmaxage(30),則30s後失敗

session的生命週期是間隔時間,如我們設定session 20min,指在20min內,如果沒有訪問session,則session失效(無法取出session屬性),下列幾種情況,session也會失效。

a.關閉web伺服器

b.reload web應用

c.session時間到

d.invalidate也會讓session失效

5.使用原則

因為session會占用伺服器的記憶體,因此不要向session存放過多,過多會影響效能[/size]

[b]案例1:[/b][size=medium]當瀏覽器關閉,但session還沒有過時,下次訪問時再訪問此session的值(前提:瀏覽器沒有關閉cookie功能)。如下例:[/size]

將值存入session,servlet1:

[b]相應http請求:[/b]

[b]從session中獲取值,servlet2:[/b]

[b]相應http請求:[/b]

[b]關閉瀏覽器後,執行servlet2:[/b]

很明顯可發現jsessionid已經不是瀏覽器關閉前的jsessionid,因此不能取到值。

[b]將servlet1修改如下:[/b]

[size=medium]關閉瀏覽器後,由於jsessionid存入cooike中,關閉瀏覽器後,仍然可以取到瀏覽器關閉前的session。

案例2:瀏覽器關閉了cookie功能,則session功能也會受到相應的影響,如案例1,如果關閉了cookie功能,就算執行了servlet1儲存了資料,再執行servlet2取資料時也取不到。需要用如下url:http://localhost:8080/httpdemo/servlet2;jsessionid=e3662a7541b9a687aba18cc826b3d226,由如下解決方案解決。

解決方案:首先需要執行request.getsession(),再執行response.encoderedirecturl(stirng url)或者response.encodeurl(string url),生成的url就和上面展示的一致,這樣就可以取到session中的值[/size]

Session和Cookie的區別

session和cookie的區別 1 儲存的位置不同 session儲存在伺服器端的記憶體中,占用伺服器資源。cookie是儲存在客戶端。可以是瀏覽器中或者是檔案中 2 儲存的時間不同 session是關閉當前會話相關瀏覽器後自動清空。cookie是根據過期時間而會有不同。3 安全性不同 sess...

cookie和session的區別

一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於在伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到儲存標識的目...

cookie和session的區別

分類 計算機網路 2011 10 21 10 43 4785人閱讀收藏 舉報 session 瀏覽器伺服器 servlet url儲存 一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我...