主要內容
- 會話技術
- Cookie
- Session
- JSP:入門學習
會話技術
- 會話概念:一次會話中包含多次請求和響應
*一次會話:瀏覽器一次給服務器資源發送請求,會話建立,直到一方斷開爲止 - 會話的功能:在一次會話的範圍內(多次請求間),進行數據的共享
- 會話的方式:
- 客戶端會話技術:Cookie
- 服務器端會話技術:Session
Cookie:客戶端會話技術
-
概念
*客戶端會話技術,用來將數據保存到客戶端 -
快速入門
*使用步驟
1. 創建Cookie對象,並綁定數據
*new Cookie(String name, String value);
2. 發送Cookie對象到客戶端
*response.addCookie(Cookie cookie);
3. 從客戶端的請求獲取Cookie對象,拿到數據(可以獲取多個cookie)
*Cookie[] request.getCookies() -
注意
*Cookie只在同一次會話中有效,過了本次會話,則其中的數據便不能共享
*也即,只能在同一個客戶端下,請求服務器的資源A,在請求服務器的資源B…時,纔可以共享Cookie的內容 -
Cookie的原理
-
Cookie的實現原理
*基於響應頭set-cookie和請求頭cookie實現的 -
Cookie的實現細節
- 一次能不能發送多個cookie?
*我們可以通過request.getCookies()方法獲取多個cookie
*同樣我們也可以發送多個cookie
*我們只需要創建多個Cookie對象,然後每次均通過response.addCookie(Cookie cookie)將其發送即可 - cookie能在瀏覽器中保存多長時間?
- 默認情況下,當瀏覽器關閉後,Cookie數據被銷燬
- 手動設置:
*我們可以通過public void setMaxAge(int expiry)方法來設置Cookie存儲的時間
*當expiry的值爲正數時:表示Cookie的存活時間爲expiry秒
*當expiry的值爲負數時:即爲默認值,瀏覽器關閉後自動銷燬
*當expiry爲0時:表示直接刪除Cookie信息
- cookie能不能存中文?
*在Tomcat 版本8之前,cookie中不支持直接存儲中文
*需要將中文進行轉碼 --> 一般使用URL編碼(%E3)
*在tomcat 版本8之後,cookie可以直接存儲中文 - cookie的獲取範圍(共享範圍)有多大?
- 假設在同一個tomcat服務器中,部署了多個項目,那麼這些項目之間cookie能否共享?
- 默認不能共享
- 若要共享,則需要設置public void setPath(String uri)函數;設置cookie的獲取範圍
*默認情況下,uri爲當前項目的虛擬目錄
*要共享,則可以設置uri爲"/"
- 不同tomcat服務器中,cookie能否共享?
- 需要調用public void setDomain(String pattern)函數進行設置
如果設置pattern的一級域名相同,則部署在tomcat上的多個服務器之間cookie可以共享
*例如
設置setDomain(".baidu.com"),則tieba.baidu.com和news.baidu.com中的cookie就可以共享
- 需要調用public void setDomain(String pattern)函數進行設置
- 假設在同一個tomcat服務器中,部署了多個項目,那麼這些項目之間cookie能否共享?
- 一次能不能發送多個cookie?
-
Cookie的特點和應用
- Cookie是客戶端會話技術,所以cookie存儲的數據在客戶端瀏覽器
- 瀏覽器對單個cookie的大小有限制(4kb) 並且對同一個域名下的總cookie數量也有限制(20個)
*作用
1. cookie一般用於存儲少量的不太敏感的數據
2. 在不登陸的情況下,完成服務器對客戶端的身份識別 -
Cookie小案例
案例詳細內容見此處