Cookie cookie = new Cookie("cool", "tiger!");
response.addCookie(cookie);
2:在Serlvet中管理Cookie
Servlet中提供瞭如下一系列操作Cookie的API
–Cookie(name, value):構造方法用於創建一個或多個Cookie
–setMaxAge(int lifetime):設置Cookie的過期時間(以秒爲單位)。默認值爲負值(Cookie將在瀏覽器關閉時過期)
–getMaxAge():獲取Cookie的過期時間。
–getName():獲取Cookie的名字
–setValue(String value):指定Cookie的值。
–getValue():獲取Cookie的值
-.......
3:在Servlet中使用Cookie
要將Cookie發送到客戶端,Servlet應該按照下列的操作步驟執行:
–創建一個或多個Cookie,使用構造方法指定Cookie的名字和值
–使用setXXX方法爲Cookie設置屬性值
–使用HttpServletResponse對象的addCookie()方法將Cookie插入到響應頭中
要讀取客戶端傳入的Cookie,Servlet執行下列操作步驟:
–使用HttpServletRequest對象的getCookie方法返回一個Cookie對象數組
–Servlet遍歷該數組(調用getName()方法),直到找到與名稱相匹配的Cookie值
二:Session
1:Session原理
-服務器可以爲客戶端創建並維護一個Session對象,用於存放數據。
-在創建Session對象的同時,服務器將會爲該 Session對象產生一個唯一編號,這個編號稱之爲SessionID
-服務器以Cookie的方式將SessionID存放在客戶端。
-當瀏覽器再次訪問該服務器時,會將SessionID作爲Cookie信息帶到服務器,服務器可以通過該SessionID檢索到以前的Session對象,並對其進行訪問
2:Session工作流程
3:Session會話跟蹤機制
用戶發送請求
HttpSession session = request.getSession(); //getSession(false)方法使用已經存在的會話,而不必創建新會話
服務器的響應
再次發送請求
4:HttpSessoin接口
HttpSession接口常用的一些方法
–setAttribute(java.lang.String, java.lang.Object):在Session對象中用一個名字綁定一個對象。
–getAttribute(java.lang.String):通過名字獲取Session對象中保存的對象。
–removeAttribute(java.lang.String):在Session中刪除與一個名字對應的對象。
–getCreationTime():返回第一次創建會話的時間。
–getLastAccessedTime():返回容器最後一次得到該會話ID的請求時間。
–setMaxInactiveInterval(int interval):對於會話指定客戶請求的最大間隔時間,以秒爲單位。-1表示永不過期
–getMaxInactiveInterval(int interval):返回客戶請求的最大間隔時間。
–invalidate():會話結束,當前存在在會話中的所有會話屬性也會解除綁定。
–getId():此方法返回每個session唯一的標識
-......
5:會話超時管理
銷燬會話可以採用如下三種簡單的方式 //瀏覽器關閉時並不意味着Session對象被刪除
–設置會話超時。
–在Session對象上調用invalidate()方法。
–應用結束(崩潰或取消部署)
<session-config>
<session-timeout>15</session-timeout>
</session-config>
6:Session持久化管理
三:URL重寫
Session對象的正常使用要依賴於Cookie
URL地址重寫能夠取得置於Cookie中的會話,並把會話ID附加到訪問應用的各個URL最後
URL重寫方法:
response.encodeURL()
response.encodeRedirectURL(“/lovobook/sucess.html” )
URL重寫是容器自動完成的,但需要我們對URL進行編碼纔有效
總結:
1 HTTP協議使用的是無狀態的連接,連接只針對一個請求/響應
2 狀態管理方案:表單隱藏字段、Cookie、Session、URL重寫
3 Cookie是Web服務器發送到客戶端瀏覽器並保存的簡短文本信息
4 Session對象就是服務器爲客戶端創建並維護的用於存放客戶狀態數據的對象
5 用戶會禁用Cookie。這時我們可以使用URL地址重寫來解決
6 通過HttpServletResponse的addCookie方法將該Cookie信息添加到響應信息中
7 Session對象是某個Servlet調用HttpServletRequest.getSession()這樣的語句時才被創建
8 Session對象是保存在服務器端,瀏覽器關閉時並不意味着Session對象被刪除
9 Session只認SessionID不認人
10 應當儘量使用維護時間短的域對象
11 在向客戶返回第一個響應時,會同時嘗試設置Cookie和URL重寫兩種做法