1.Cookie:
Cookie它是存儲在客戶端或者客戶端瀏覽器上的文本文件,很容易就可以查看到.
所以,不能使用Cookie存儲敏感數據,比如銀行卡密碼
不能使用Cookie來做必要的功能。
Cookie不能存儲中文
使用URL編碼來簡介存儲中文
username = URLEncoder.encode(username)
//解碼
name = URLDecoder.decode(name)
2.Session
Session:會話
用戶使用瀏覽器,進行一系列的訪問,這一個過程就是一個會話
也就是說,多個請求共享一個會話
會話在第一次訪問的時候就被創建
HttpSession:默認有效時間是30分鍾
使用代碼設置session的失效時間
session.setMaxInactiveInterval(100);
使用配置文件設置session的失效時間
<session-config>
<session-timeout>200</session-timeout>
</session-config>
讓session立刻失效
session.invalidate();
注意:
當使用代碼和配置文件同時配置session的失效時間的時候
以小的時間為准[注意,他們的單位都是分鍾]
Session實現的機制:它是基於Cookie
當用戶第一次訪問的時候,會自動生成一個Cookie,用來記錄當前Session的ID值。
這個Cookie的key是JSESSIONID value就是Session 的ID值
當Cookie被阻止,應該強制把JSESSIONID傳過去,使用URL重寫
<a href=<%=response.encodeURL("ViewAllUserServlet")%>>查看所有用戶強制傳送JSESSIONID</a>
3.Hidden
.隱藏表單域:<input type="hidden">,非常適合步需要大量數據存儲的會話應用。
4.url 重寫
URL 重寫:URL 可以在后面附加參數,和服務器的請求一起發送,這些參數為名字/值對。 見 http://blog.csdn.net/xh16319/article/details/8464055
為了防止用戶禁用cookie,可以使用URL重寫技術來實現會話跟蹤!
url重寫原理:當服務器程序調用request.getSession();代碼時,其會先看request.getCookies()方法中有沒有名為JSESSIONID的cookie帶過來,如果沒有,就看URL有沒有被重寫(即附帶JSESSIONID),如果有,則從服務器中找key為JSESSIONID的session對象,如果都沒有,則創建一個新的session。如果用戶禁用了cookie,則只能通過URL重寫方式實現會話跟蹤!