一次會話中包含多次請求和響應
一次會話:瀏覽器第一次給伺服器傳送請求,會話建立,直到有一方斷開為止功能:在一次會話範圍內的多次請求間,共享資料
方式: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,...