會話技術(Cookie Session)

2021-10-23 13:08:48 字數 3359 閱讀 2781

概念:會話就是客戶端與伺服器之間的乙個通訊過程,一次會話中包含多次請求和響應

一次會話:客戶端第一次請求伺服器時建立會話,直到任意一方斷開為止

作用:在一次會話的範圍內的多次請求之間可以實現資料的共享

分類:客戶端會話技術:cookie

服務端會話技術:session

概念:客戶端會話技術,它將資料儲存到客戶端(瀏覽器)

方法:new cookie(string name,string value):建立cookie物件,將兩個引數形成鍵值對繫結到當前cookie物件中

response.addcookie(cookie cookie):傳送cookie物件給客戶端

request.getcookies():獲取cookie物件陣列

cookie的原理:

在客戶端第一次訪問伺服器時,伺服器會將cookie物件中的鍵值對,以" set-cookie:key=value "的形式通過響應頭髮送給客戶端

在客戶端再次訪問伺服器時,客戶端會在請求頭中攜帶著" cookie:key=value;… "傳送給伺服器

cookie的細節:

多次傳送cookie物件給客戶端,如果鍵相同,值不同,那麼原來的值會被新的值覆蓋

一次可以傳送多個cookie物件給客戶端

cookie在客戶端中可以儲存多久呢?

預設情況,當瀏覽器關閉後,cookie被銷毀

可以持久化儲存:setmaxage(int seconds)

正數:實現了持久化儲存

負數:預設值,瀏覽器關閉時,銷毀cookie

cookie中不能直接儲存中文,要儲存中文到cookie中,在儲存前要對中文內容進行編碼:

string s =

"中文"

;s =

urlencoder

.encode

(s,"utf-8"

);

伺服器獲取到的請求時攜帶的cookie是編碼後的內容,在獲取後需要對其進行解碼:

string value = cookie.

getvalue()

;value =

urldecoder

.decode

(value,

"utf-8"

);

cookie的作用範圍,也就是說客戶端在訪問伺服器的哪些資源時,請求頭中會攜帶著cookie

預設情況,是當前web應用的任意資源

可以通過 setpath(string path):來設定cookie的攜帶路徑(範圍)

setpath("/"):表示當前伺服器中的任何web應用的任何資源在被訪問時都會攜帶著cookie

setpath("/專案名/目錄"):表示只有指定web應用下的指定資料夾下的任意資源在被訪問時才會攜帶著cookie

setpath("/專案名"):表示只有指定web應用下的任意資源在被訪問時才會攜帶著cookie

setpath("/專案名/檔名"):表示只有指定web應用下的指定資源在被訪問時才會攜帶著cookie

cookie的特點:

cookie儲存資料在客戶端

客戶端對於單個cookie的大小有限制(4k),並且對同一網域名稱下的cookie數量也有限制(一般是20個)

cookie儲存的資料不安全,使用者可以隨意的清空瀏覽器中儲存的cookie資料

cookie的作用:

一般用於儲存少量的使用者資訊

概念:session是服務端會話技術,能夠在一次會話的多次請求間共享資料,將資料儲存到服務端。

httpsession 介面

方法:建立/獲取session:request.getsession();

session是乙個域物件:

setattribute(string key,object value);

getattribute(string key);

removeattribute(string key);

session的原理:

session的實現是依賴於cookie

當呼叫 request.getsession()時,伺服器會查詢客戶端的請求頭中是否攜帶了存有指定jsessionid的cookie,如果沒有,則建立乙個session;如果有,則獲取該session物件

如果想要在關閉瀏覽器後(會話結束)還能訪問到session域中儲存的資料,就需要對存有jsessionid的cookie實現持久化

session的細節:

客戶端關閉,伺服器不關,兩次獲得到的session是否是同乙個?

預設情況下,不是同乙個

如果想要獲得的是同乙個session,必須建立乙個cookie,鍵為 jsession,值是 session.getid(),並將此cookie持久化

cookie c =

newcookie

("jsessionid"

, session.

getid()

);c.setmaxage(60

);response.

addcookie

(c);

伺服器關閉,兩次獲得到的session是否是同乙個?

無論存有jsessionid的cookie是否持久化,在伺服器關閉時,伺服器中的session都儲存到tomcat\work\catalina\localhost\虛擬路徑下,生成乙個session.ser的檔案來儲存session中的資料,這個過程叫session的鈍化。再次開啟伺服器時,伺服器會中這個目錄下讀取之前儲存的sessions.ser檔案到伺服器中,並將此檔案刪除,這個過程叫session的活化。

注:如果鈍化的物件是自定義物件,需要將此類序列化

多個被鈍化的session會儲存在同乙個sessions.ser檔案中

只有正常關閉伺服器,session才會被鈍化

session物件何時被銷毀?

在tomcat/conf下的web.xml中,預設配置session的失效時長是30分鐘,也可以在當前專案web.xml中配置失效時長

1<

/session-timeout>

<

/session-config>

可以通過 session.invalidate() 方法,立即釋放session物件

03012 會話技術Cookie Session

1 會話技術簡介 1 儲存客戶端的技術 的購物系統,使用者將購買的商品資訊儲存到 因為http協議是無狀態的,也就是說每個客戶訪問伺服器端資源時,伺服器並不知道該客戶端是誰,所以需要會話技術識別客戶端的狀態。會話技術是幫助伺服器記住客戶端狀態 區分客戶端 2 會話技術 從開啟乙個瀏覽器訪問某個站點,...

會話及其會話技術(三)

瀏覽器與伺服器建立一次請求與對話的過程。sesssionid 類似於診療卡 session基於cookie來實現的 sessionid產生過程 瀏覽器訪問web伺服器,servlet容器會建立乙個session物件和id屬性 session物件 病歷檔案 id 醫療卡 客戶端後續訪問伺服器,只傳遞標...

會話cookies技術

cookies是一種能夠讓 伺服器把少量資料儲存到客戶端的硬碟或記憶體,或是從客戶端的硬碟讀取資料的一種技術。cookies是當你瀏覽某 時,由web伺服器置於你硬碟上的乙個非常小的文字檔案,它可以記錄你的使用者id 密碼 瀏覽過的網頁 停留的時間等資訊。當你再次來到該 時,通過讀取cookies,...