1.儲存客戶端的狀態
由乙個問題引出今天的內容,例如**的購物系統,使用者將購買的商品資訊儲存到哪 裡?因為http協議是無狀態的,也就是說每個客戶訪問伺服器端資源時,伺服器並 不知道該客戶端是誰,所以需要會話技術識別客戶端的狀態。會話技術是幫助伺服器 記住客戶端狀態(區分客戶端)
2.會話技術
從開啟乙個瀏覽器訪問某個站點,到關閉這個瀏覽器的整個過程,成為一次會話。會 話技術就是記錄這次會話中客戶端的狀態與資料的。
會話技術分為cookie和session:
cookie:資料儲存在客戶端本地,減少伺服器端的儲存的壓力,安全性不好,客戶端 可以清除cookie
session:將資料儲存到伺服器端,安全性相對好,增加伺服器的壓力
cookie的定義:
其實就是乙份小資料,是伺服器給客戶端,並且儲存在客戶端的乙份小資料。
應用場景:
自動登入、瀏覽記錄、購物車。
為什麼要有cookie?
由於http協議是無狀態的,客戶端與伺服器通訊時,是無狀態的,其實就是客戶端在第二次訪問的時候,伺服器根本不知道這個客戶端以前有沒有來訪過。為了更好的使用者體驗,更好的互動【自動登入】,其實從公司的角度來說,為了更好的收集使用者習慣。(大資料)
cookie技術
cookie技術是將使用者的資料儲存到客戶端的技術,我們分為兩方面學習:
第一,伺服器端怎樣將乙個cookie傳送到客戶端
第二,伺服器端怎樣接受客戶端攜帶的cookie
1.伺服器端向客戶端傳送乙個cookie
1)建立cookie:
cookie cookie = new cookie(string cookiename,string cookievalue);
示例:
cookie cookie = new cookie(「username」,」zhangsan」);
那麼該cookie會以響應頭的形式傳送給客戶端:
注意:cookie中不能儲存中文
cookie.setmaxage(int seconds); ---時間秒
注意:如果不設定持久化時間,cookie會儲存在瀏覽器的記憶體中,瀏覽器關閉 cookie資訊銷毀(會話級別的cookie),如果設定持久化時間,cookie資訊會 被持久化到瀏覽器的磁碟檔案裡
示例:
cookie.setmaxage(10*60);
設定cookie資訊在瀏覽器的磁碟檔案中儲存的時間是10分鐘,過期瀏覽器 自動刪除該cookie資訊
3)設定cookie的攜帶路徑:
cookie.setpath(string path);
注意:如果不設定攜帶路徑,那麼該cookie資訊會在訪問產生該cookie的 web資源所在的路徑都攜帶cookie資訊
示例:
cookie.setpath(「/web16」);
代表訪問web16應用中的任何資源都攜帶cookie
cookie.setpath(「/web16/cookieservlet」);
代表訪問web16中的cookieservlet時才攜帶cookie資訊
4)向客戶端傳送cookie:
response.addcookie(cookie cookie);
5)刪除客戶端的cookie:
如果想刪除客戶端的已經儲存的cookie資訊,那麼就使用同名同路徑的持久化時間為0的cookie進行覆蓋即可
2.伺服器端怎麼接受客戶端攜帶的cookie
cookie資訊是以請求頭的方式傳送到伺服器端的:
1)通過request獲得所有的cookie:
cookie cookies = request.getcookies();
2)遍歷cookie陣列,通過cookie的名稱獲得我們想要的cookie
for(cookie cookie : cookies)
}session技術的定義:
session技術是將資料儲存在伺服器端的技術,會為每個客戶端都建立一塊記憶體空間 儲存客戶的資料,但客戶端需要每次都攜帶乙個標識id去伺服器中尋找屬於自己的內 存空間。所以說session的實現是基於cookie,session需要借助於cookie儲存客 戶的唯一性標識jsessionid。
在session這我們需要學習如下三個問題:
怎樣獲得屬於本客戶端的session物件(記憶體區域)?
怎樣向session中訪問資料(session也是乙個域物件)?
session物件的生命週期?
1.獲得session物件
httpsession session =request.getsession();
此方法會獲得專屬於當前會話的session物件,如果伺服器端沒有該會話的session 物件會建立乙個新的session返回,如果已經有了屬於該會話的session直接將已有 的session返回(實質就是根據jsessionid判斷該客戶端是否在伺服器上已經存在session了)
2.怎樣向session中訪問資料(session也是乙個域物件)
session也是儲存資料的區域物件,所以session物件也具有如下三個方法:
session.setattribute(string name,object obj);
session.getattribute(string name);
session.removeattribute(string name);
3.session物件的生命週期(面試題/筆試題)
建立:第一次執行request.getsession()時建立
銷毀:
1)伺服器(非正常)關閉時
2)session過期/失效(預設30分鐘)
問題:時間的起算點 從何時開始計算30分鐘?
從不操作伺服器端的資源開始計時
可以在工程的web.xml中進行配置
3)手動銷毀session
30session-timeout>
session-config>
session.invalidate();
作用範圍:
預設在一次會話中,也就是說在,一次會話中任何資源公用乙個session物件
面試題:瀏覽器關閉,session就銷毀了? 不對
總結:
重點:
會話技術:
cookie技術:存到客戶端
傳送cookie
cookie cookie = new cookie(name,value)
cookie.setmaxage(秒)
cookie.setpath()
response.addcookie(cookie)
獲得cookie
cookie cookies = request.getcookies();
cookie.getname();
cookie.getvalue();
session技術:存到伺服器端 借助cookie儲存jsessionid
session生命週期
建立:第一次指定request.getsession();
銷毀:伺服器關閉、session失效/過期、手動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,...