【Servlet】Cookie会话跟踪技术
Cookie
Cookie技術是一種在客戶端保持會話跟蹤的解決方案,會話數據保存在客戶端瀏覽器。
Cookie在用戶第一次訪問服務器時,由服務器通過響應頭的方式發送給客戶端瀏覽器;當用戶再次向服務器發送請求時會附帶上這些文本信息。
在使用Cookie時,要保證客戶端瀏覽器接受Cookie。
存儲Cookie會話數據
javax.servlet.http.Cookie類,用于存儲會話數據,存儲過程如下:
獲取Cookie會話數據
存儲在客戶端的Cookie,通過HttpServletRequest對象的getCookies()方法獲取,該方法返回所訪問網站的所有Cookie的對象數組,遍歷該數組可以獲得各個Cookie對象。
Cookie[] cookies = request.getCookies(); if(cookies != null) {for(Cookie c : cookies){out.println("屬性名:" + c.getName());out.println("屬性值" + c.getValue());} }Cookie訪問路徑
在默認情況下,創建Cookie時沒有設置路徑,該Cookie只能被當前目錄及子目錄應用訪問。Cookie的setPath()方法可以重新指定其訪問路徑,例如:將其設置為在某個應用下的某個路徑共享,或者在同一服務器內的所有應用共享。
設置Cookie的有效訪問路徑:void setPath(java.lang.String uri)。
有效路徑指的是Cookie的有效路徑保存在哪里,那么瀏覽器在有效路徑下訪問服務器時就會帶著Cookie信息,否則不帶Cookie信息。
Cookie存活時間
Cookie有一定的存活時間,不會在客戶端一直保存,默認情況下,Cookie保存在瀏覽器內存中,在瀏覽器關閉時失效,這種Cookie也稱為會話Cookie,若要使Cookie較長時間的保存在磁盤上,可以通過Cookie對象的setMaxAge()方法設置其存活時間。
Cookie對象可以通過setMaxAge()方法設置其存活時間,時間以秒為單位:void setMaxAge(int expiry)
- 時間若為正整數,表示其存活的秒數。
- 時間若為負數,表示其為臨時Cookie。
- 時間若為0,表示通知瀏覽器刪除相應的Cookie,刪除Cookie時,path必須一致,否則不會刪除。
例如:
- name.setMaxAge(7*24*60*60);
- name.setMaxAge(0); //刪除Cookie
Cookie的局限性
Cookie的缺點主要集中在其安全性和隱私保護上,主要包括以下幾種:
- Cookie可能被禁用,當用戶非常注重個人隱私保護時,很可能會禁用瀏覽器的Cookie功能。
- Cookie可能被刪除,因為每個Cookie都是硬盤上的一個文件,因此很有可能被用戶刪除。
- Cookie的大小和個數受限,不同瀏覽器有所區別,基本上單個Cookie保存的數據不能超過4095個字節,50個/每個域名。
- Cookie安全性不夠高,所有的Cookie都是以純文本的形式記錄于文件中,因此如果要保存用戶名密碼等信息時,最好事先經過加密處理。
總結
以上是生活随笔為你收集整理的【Servlet】Cookie会话跟踪技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 口算练习题(洛谷P1957题题解,Jav
- 下一篇: 【项目管理】敏捷团队协议示例