JavaWeb會話跟蹤

cookiesession是常用的會話跟蹤技術

cookie機制

1web應用程序是使用HTTP協議傳輸數據的HTTP協議是無狀態的協議,一旦數據交換完畢就會關閉鏈接。Cookie可以彌補HTTP協議無狀態的不足。

位於:javax.servlet.http.Cookie

2Cookie具有不可跨域名性Cookie的管理是瀏覽器,瀏覽器判斷一個網站是否能操作另一個網站的Cookie的依據是域名。例:images.baidu.comwww.baidu.com不是同一個域名,cookie不能相互操作。但可以對此類cookie做特殊處理,讓其相互訪問。

3Unicode編碼:保存中文

中文屬於Unicode字符,在內存中佔4個字符,而英文屬於ASCII字符,內存中只佔2個字節。Cookie中使用Unicode字符時需要URLEncode編碼,否則亂碼。一般採用UTF-8即可,GBK不推薦使用,因爲瀏覽器不一定支持,而javascript也不支持GBK

4BASE64編碼:保存二進制圖片

Cookie可以使用二進制數據。例如在Cookie中使用數字證書,提供安全度。使用二進制數據時需要編碼BASE64

BASE64sun.misc.BASE64Encode;sun.misc.BASE64Decoder;

byte[] binary = new byte[1024];

String content = BASE64Encode.class.newInstance().encode(binary);

5Cookie的屬性

                           wKioL1O8LMLRXwF_AATJyUDnHJA487.jpg

 

6Cookie的有效期

cookie.setMaxAge()

負數:爲臨時性Cookie,不會被持久化,不會寫到cookie文件中,cookie信息保存在瀏覽器內存中,關閉瀏覽器cookie就會消失,cookie的默認值爲-1

0:爲零表示刪除該cookie,會從瀏覽器內存中刪除。

maxAge屬性只是被瀏覽器判斷是否過期的,不會提交到服務端。

修改:新建一個同名的cookie,覆蓋原來的cookie

刪除:新建同名的cookie,並將maxAge爲零,進行覆蓋。

7、永久登錄

方案:在登錄時查詢一次數據庫,以後訪問驗證登錄信息時不再查詢數據庫。實現方式是把賬號按照一定的規則加密後,連同賬號一塊保存到cookie中。下次訪問時只需要判斷賬號的加密規則是否正確即可。如:把賬號連同密匙用MD5算法加密後保存到cookie中,驗證時,驗證cookie中的賬號與密匙是否與cookie中的一樣。

 

session機制

session對應類javax.servlet.http.HttpSession

session的使用比cookie方便,但過多的session存儲在服務器內存中,會對服務器造成壓力。

session的生命週期:

session在用戶第一次訪問服務器的時候自動創建,需要注意只有訪問JSP,Servlet等程序時纔會創建session,訪問html等靜態資源並不會創建session。如果未生成session,可以使用request.getSession(true)強制生成。session生成後,只要用戶繼續訪問,服務器就會更新session的最後時間,並維護session。用戶每訪問服務器一次,無論是否讀寫session,服務器都認爲該用戶的session活躍了一次。

session的有效期:

越來越多的用戶訪問,session也會越多,爲防止內存溢出,服務器會把長時間內沒有活躍的session從內存中刪除。超時時間屬性爲maxInactiveInterval,可設置超時時間。

tomcat的默認超時時間是20分鐘。

web.xml也可以設置超時時間

<session-config>

         <session-timeout>60</session-timeout >  <!—單位:分鐘à

</session-config>

session對瀏覽器的要求:

http協議是無狀態的,不能依據http連接來判斷是否同一客戶,因此服務器向客戶發送一個名爲JSESSIONIDcookie,它的值爲sessionidsession依據該cookie來識別是否爲同一用戶。該cookie爲服務器自動生成,他的maxAge屬性爲-1,表示僅當前瀏覽器內有效。

如果客戶端瀏覽器將cookie功能禁止,或者不支持cookie,例如大多數手機瀏覽器都不支持cookieJavaweb提供另一種方案:URL地址重寫。

URL地址重寫:

原理是將該用戶sessionid信息重新寫到URL地址中。

參考http://book.51cto.com/art/200912/169770.htm

wKiom1O8LRvzb08JAAC9fGe7gJ8489.jpg

wKioL1O8LPHBH5jCAAGO9E8eGww423.jpg

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章