Cookie和session兩大會話技術的學習

2021-10-08 11:42:38 字數 2369 閱讀 8217

會話表示的是當客戶端和服務端第一次接觸(客戶端第一次成功請求到伺服器的話)這時候乙個會話就完成了,當其中一方斷開連線會話就結束,會話主要用於共享資料,例如同乙個會話範圍內一方可以通過會話的方法傳輸火或接收另一方的資料。

客戶端會話技術:cookie

服務端會話技術:session

一般使用流程:

1. 建立cookie物件,繫結資料

* new cookie(string name, string value)

2. 傳送cookie物件

* response.addcookie(cookie cookie)

3. 獲取cookie,拿到資料

* cookie request.getcookies()

一些cookie的使用細節:

1. 一次可不可以傳送多個cookie?

* 可以

* 可以建立多個cookie物件,使用response呼叫多次addcookie方法傳送cookie即可。

2. cookie在瀏覽器中儲存多長時間?

1. 預設情況下,當瀏覽器關閉後,cookie資料被銷毀

2. 持久化儲存:

* setmaxage(int seconds)

1. 正數:將cookie資料寫到硬碟的檔案中。持久化儲存。並指定cookie存活時間,時間到後,cookie檔案自動失效

2. 負數:預設值

3. 零:刪除cookie資訊

3. cookie能不能存中文?

* 在tomcat 8 之前 cookie中不能直接儲存中文資料。

* 需要將中文資料轉碼---一般採用url編碼(%e3)

* 在tomcat 8 之後,cookie支援中文資料。特殊字元還是不支援,建議使用url編碼儲存,url解碼解析

一般來說cookie不共享,但是經過設定可以是同乙個伺服器下多個專案的cookie共享,或者使多個伺服器,在同乙個一級網域名稱下cookie共享,這樣只需乙個使用者中心來設定請求攔截判斷是否登入,然後通過cookie共享使使用者在同乙個大應用裡面不同模組中,無需重複登入。

cookie共享問題?

假設在乙個tomcat伺服器中,部署了多個web專案,那麼在這些web專案中cookie能不能共享?

​ 預設情況下cookie不能共享

setpath(string path):設定cookie的獲取範圍。預設情況下,設定當前的虛擬目錄

如果要共享,則可以將path設定為"/"

​ 不同的tomcat伺服器間cookie共享問題?

setdomain(string path):如果設定一級網域名稱相同,那麼多個伺服器之間cookie可以共享

setdomain(".baidu.com"),那麼tieba.baidu.com和news.baidu.com中cookie可以共享

一般cookie容易被擷取在這裡面儲存敏感資料會造成應用的安全性低,而且瀏覽器對cookie也有很多的限制,比如: 瀏覽器對於單個cookie 的大小有限制(4kb) 以及 對同乙個網域名稱下的總cookie數量也有限制(20個) 所以一般來說,cookie用於存少量不太敏感的資料或者在不登入的情況下完成伺服器對客戶端的身份識別

上文提到session是用於伺服器的一種資料共享方式,但是它的原理還是cookie。

session的一般使用步驟:

獲取httpsession物件:

2. 使用httpsession物件:

object getattribute(string name)

void setattribute(string name, object value)

void removeattribute(string name)

1、當客戶端關閉後,伺服器不關閉,兩次獲取session是否為同乙個?

​ 預設情況下。不是。

2、客戶端不關閉,但是伺服器關閉了那兩次獲取的session是否是同乙個?

不是同乙個但是,為了儲存資料不丟失。tomcat自動完成以下工作:

session鈍化:

​ 在伺服器正常關閉前tomcat會把session存到硬碟

session活化:

​ 在伺服器啟動後tomcat又會讀取硬碟上獲取session

session什麼時候被銷毀?

伺服器關閉

session物件呼叫invalidate() 。

session預設失效時間 30分鐘

選擇性配置修改

​ 30

session的特點

session用於儲存一次會話的多次請求的資料,存在伺服器端

session可以儲存任意型別,任意大小的資料

cookie和session和token是什麼?

什麼是session?什麼是cookie?什麼是token?1 cookie?由於http是一種無狀態協議,伺服器沒有辦法單單從網路連線上面知道訪問者的身份,為了解決這個問題,就誕生了cookie cookie實際上是一小段的4k文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用re...

Session和Cookie的區別

session和cookie的區別 1 儲存的位置不同 session儲存在伺服器端的記憶體中,占用伺服器資源。cookie是儲存在客戶端。可以是瀏覽器中或者是檔案中 2 儲存的時間不同 session是關閉當前會話相關瀏覽器後自動清空。cookie是根據過期時間而會有不同。3 安全性不同 sess...

cookie和session的區別

一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於在伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到儲存標識的目...