java會話技術

2021-09-24 12:57:39 字數 3360 閱讀 2545

一次會話中包含多次請求和響應

一次會話:瀏覽器第一次給伺服器傳送請求,會話建立,直到有一方斷開為止功能:在一次會話範圍內的多次請求間,共享資料

方式:1)客戶端會話技術:cookie

2)伺服器端會話技術:session 概念

客戶端會話技術,將資料儲存在客戶端

快速入門:

使用步驟:  

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

* new cookie(string name, string value)

2)傳送cookie物件

* response.addcookie(cookie cookie)

3)獲取cookie,拿到物件

* cookie[ ] request.getcookies()

實現原理

基於響應頭set-cookie和請求頭cookie實現

cookie的細節

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

* 可以

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

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

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

* 持久化儲存:

** setmaxage(int seconds)

<1> 正數:將cookie資料寫到硬碟的檔案中。持久化儲存。cookie存活時間。

<2> 負數:預設值

<3> 零:刪除cookie資訊

3) cookie能不能存中文?

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

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

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

4) 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可以共享

5) cookie的特點和作用

* cookie儲存資料在客戶端瀏覽器

* 瀏覽器對於單個cookie的大小有限制(4kb)以及對同乙個網域名稱下的總cookie數量也有限制(20個)

* 作用 :

** cookie一般用於儲存少量不敏感的資料

** 在不登入的情況下,完成伺服器對客戶端的身份識別

6)案例

* 需求:

* 分析:

** 可以採用cookie來完成

** 在伺服器中的servlet判斷是否有乙個名為lasttime的cookie

*** 有:不是第一次訪問

**** 寫回cookie:lasttime=xx年xx月xx日***x

*** 沒有:是第一次訪問

**** 寫回cookie:lasttime=xx年xx月xx日***x

註解:cookie**現特殊字元,如空格等,會出現報錯,解決方法-------傳輸cookie前使用url編碼,獲取cookie時使用url解碼

概念:伺服器端會話技術,在一次會話的多次請求間共享資料,將資料儲存在伺服器端的物件中。httpsession

快速入門:

* 獲取httpsession物件:

* 使用httpsession物件:

** object getattribute(string name)

** void setattribute(string name, object value)

** void removeattribute(string name)

原理

session的實現是依賴於cookie的

細節

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

** 預設情況下,不是

** 如果需要相同,則可以建立cookie,鍵為jsessionid,設定最大存活時間,讓cookie持久化儲存。

cookie c = new cookie("jsessionid", session.getid());

c.setmaxage(60*60);

response.addcookie(c);

* 客戶端不關閉,伺服器關閉後,兩次獲取的session是同乙個嗎?

** 不是同乙個,但是要確保資料不丟失

*** session的鈍化:

**** 在伺服器正常關閉之前,將session物件序列化到硬碟上

*** session的活化:

**** 在伺服器啟動後,將session檔案轉化為記憶體中的session物件即可

* session什麼時候被銷毀?

** 伺服器關閉

** session物件呼叫invalidate()

** session預設失效時間(30分鐘)

選擇性配置修改:tomcat/conf目錄下web.xml檔案

30

session的特點

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

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

* session和cookie的區別

** session儲存在伺服器端,cookie儲存在客戶端

** session沒有資料大小的限制,cookie有

** session資料安全,cookie相對不安全

案例:驗證碼

* 案例需求:

** 訪問帶有驗證碼的登入頁面login.jsp

** 使用者輸入使用者名稱,密碼以及驗證碼

java基礎 會話技術Cookie Session

從開啟乙個瀏覽器訪問某個站點,到關閉這個瀏覽器的整個過程,成為一次會話。會話技術就是記錄這次會話中客戶端的狀態與資料的。會話技術分為cookie和session cookie 資料儲存在客戶端本地,減少伺服器端的儲存的壓力,安全性不好,客戶端可以清除cookie session 將資料儲存到伺服器端...

會話及其會話技術(三)

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

會話cookies技術

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