一、概念
1. session: 將會話中產生的資料儲存在服務端 ; 是服務端技術 ;
2. 具體流程
1)瀏覽器第一次傳送請求需要儲存資料時,服務端獲取到需要儲存的資料,去伺服器內部檢查一下有沒有為當前瀏覽器服務的session ;如果有就直接拿過來用,如果沒有session就建立乙個新的session拿過來用 ;
2)當瀏覽器再去訪問伺服器時, 伺服器可以從session中獲取到之前為當前瀏覽器儲存的資料, 通過這種方式, 也可以來儲存會話中產生的資料,伺服器做出響應:將session 的id通過
cookie
傳送給瀏覽器
; 如下:
具體如下圖: 客戶端再次請求伺服器時,會把session的id帶給伺服器 ,服務端根據session的id到伺服器中取出該session 。
3. session域物件
作用訪問:整個會話範圍
setattribute();
getattribute();
removeattribute();
getattributenames();
4. 生命週期
1)建立: 當第一次呼叫request.getsession(),建立session物件
request.getsession();
request.getsession(true);
在呼叫上述方法時, 如果伺服器內部有為當前客戶端服務的session, 就直接拿過來使用,
如果沒有對應的session,就建立乙個新的session拿過來用.
request.getsession(false); 在呼叫該方法時, 如果伺服器內部有為當前瀏覽器服務的session就直接拿過來使用,;如果沒有對應的session,就返回null.
2)銷毀
a. 超時銷毀
如果session30分鐘沒有被使用,(例如登陸後,30分鐘未操作,會通知重新登陸) 則會超時銷毀.可以在web應用的web.xml檔案中修改session的超時時間.
<
session-config
>
<
session-timeout
>
1session-timeout
>
session-config
>
b. 自殺
當呼叫session.invalidate方法時,將會立即銷毀session
request.getsession().invalidate();
c. 意外身亡(session的鈍化)
當伺服器非正常關閉時,session會銷毀! 如果伺服器正常關閉,session將會以檔案的形式儲存在伺服器的work目錄下;
session的活化: 當伺服器再次啟動時,鈍化著的session還可以再恢復回來
5. 具體案例1--實現使用者瀏覽商品列表,可以將商品加入購物車,並可以對購物車的商品進行結算
具體流程:
將商品加入購物車:實現buyservlet: 從引數列表中獲取選中的商品資訊---獲取session物件---將商品資訊儲存到session中---建立cookie物件---將之前的session的id存入cookie中 --- 將cookie返回給客戶端
為購物車中的商品進行結算:實現payservlet : 獲取session物件 -- 從session物件中獲取需要支付的商品---執行支付
注意:建立session的方法----request.getsession(); //獲取瀏覽器中對應的session,通過之前儲存在cookie中的jsessionid
1) 將商品加入購物車:實現buyservlet
2)為購物車中的商品進行結算:實現payservlet
6.優化 伺服器返回cookie攜帶session的id 的方案:
在建立session後, 伺服器會向瀏覽器傳送cookie來儲存session的id, 我們也可以向瀏覽器傳送cookie,
也儲存session的id,區別是我們傳送的cookie, 可以設定最大生存時間
,
SESSION會話技術
以下對session會話技術詳解 要了解點http協議理解更佳 http請求頭和http相應頭 在session start的時候,瀏覽器會向伺服器發出請求 在請求的同時,如果是第一次apache會給瀏覽器分配乙個session id便識別,到瀏覽器下次請求時就會攜帶 apache分配的sessio...
SESSION會話技術
以下對session會話技術詳解 要了解點http協議理解更佳 http請求頭和http相應頭 在session start的時候,瀏覽器會向伺服器發出請求 在請求的同時,如果是第一次apache會給瀏覽器分配乙個session id便識別,到瀏覽器下次請求時就會攜帶 apache分配的sessio...
會話技術 Session
一 session 是伺服器端會話技術,在一次會話的多次請求間共享資料,將資料儲存在伺服器端的物件中的 httpsession 二 httpsession物件的方法主要就是域的三個方法 object getattribute string name void setatrribute strng n...