會話技術 Session

2021-08-21 17:10:22 字數 3129 閱讀 6443

一、概念

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...