[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機制採用的是在伺服器端保持狀態的方案。同時我...