概念:會話就是客戶端與伺服器之間的乙個通訊過程,一次會話中包含多次請求和響應一次會話:客戶端第一次請求伺服器時建立會話,直到任意一方斷開為止
作用:在一次會話的範圍內的多次請求之間可以實現資料的共享
分類:客戶端會話技術: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中,在儲存前要對中文內容進行編碼:
伺服器獲取到的請求時攜帶的cookie是編碼後的內容,在獲取後需要對其進行解碼:string s =
"中文"
;s =
urlencoder
.encode
(s,"utf-8"
);
cookie的作用範圍,也就是說客戶端在訪問伺服器的哪些資源時,請求頭中會攜帶著cookiestring value = cookie.
getvalue()
;value =
urldecoder
.decode
(value,
"utf-8"
);
預設情況,是當前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中配置失效時長
可以通過 session.invalidate() 方法,立即釋放session物件
1<
/session-timeout>
<
/session-config>
03012 會話技術Cookie Session
1 會話技術簡介 1 儲存客戶端的技術 的購物系統,使用者將購買的商品資訊儲存到 因為http協議是無狀態的,也就是說每個客戶訪問伺服器端資源時,伺服器並不知道該客戶端是誰,所以需要會話技術識別客戶端的狀態。會話技術是幫助伺服器記住客戶端狀態 區分客戶端 2 會話技術 從開啟乙個瀏覽器訪問某個站點,...
會話及其會話技術(三)
瀏覽器與伺服器建立一次請求與對話的過程。sesssionid 類似於診療卡 session基於cookie來實現的 sessionid產生過程 瀏覽器訪問web伺服器,servlet容器會建立乙個session物件和id屬性 session物件 病歷檔案 id 醫療卡 客戶端後續訪問伺服器,只傳遞標...
會話cookies技術
cookies是一種能夠讓 伺服器把少量資料儲存到客戶端的硬碟或記憶體,或是從客戶端的硬碟讀取資料的一種技術。cookies是當你瀏覽某 時,由web伺服器置於你硬碟上的乙個非常小的文字檔案,它可以記錄你的使用者id 密碼 瀏覽過的網頁 停留的時間等資訊。當你再次來到該 時,通過讀取cookies,...