2020-03-22

Cookie & Session

(一)會話技術(shù)的概述

一售貌、什么是會話

會話可以簡單理解為沮协,用戶打開一個(gè)瀏覽器谦铃,點(diǎn)擊多個(gè)超鏈接訪問服務(wù)器的web資源抛姑,然后關(guān)閉瀏覽器赞厕,整個(gè)過程稱為是一次會話

二、為什么要學(xué)習(xí)會話

1定硝、每個(gè)用戶與服務(wù)器進(jìn)行交互過程中皿桑,產(chǎn)生一些各自的數(shù)據(jù),程序想要把這些數(shù)據(jù)進(jìn)行保存蔬啡,就需要使用會話技術(shù)

2诲侮、例如:用戶點(diǎn)擊超鏈接購買一個(gè)商品,程序應(yīng)該保存用戶所購買的商品箱蟆,以便于用戶點(diǎn)擊結(jié)賬時(shí)沟绪,可以得到用戶所購買的商品信息

3、思考:用戶購買的商品保存在Request或ServletContext

中是否可以空猜?

答案:無論保存在Request或ServletContext中都不行

(二)會話技術(shù)的實(shí)現(xiàn)原理

一绽慈、會話技術(shù)分類

1恨旱、Cookie技術(shù)

(1)Cookie是客戶端技術(shù),程序把每個(gè)用戶的數(shù)據(jù)以cookie的形式保存到各自的瀏覽器中坝疼,

(2)當(dāng)用戶使用瀏覽器再次訪問服務(wù)器中的Web資源的時(shí)候搜贤,就會帶著各自的數(shù)據(jù)過去。

(3)這樣Web資源處理的就是用戶各自的數(shù)據(jù)了

2钝凶、Session

技術(shù)

(1)Session是服務(wù)器端技術(shù)仪芒,利用這個(gè)技術(shù),服務(wù)器在運(yùn)行時(shí)為每一個(gè)用戶的瀏覽器創(chuàng)建一個(gè)獨(dú)享的Session對象耕陷。

(2)由于Session為用戶瀏覽器獨(dú)享掂名,所有用戶在訪問服務(wù)器的時(shí)候,可以把各自的數(shù)據(jù)放在各自的Session中哟沫,

(3)當(dāng)用戶再次訪問服務(wù)器中的Web資源的時(shí)候饺蔑,其他的Web資源再從用戶各自的Session中取出數(shù)據(jù),為用戶服務(wù)

二南用、會話技術(shù)的實(shí)現(xiàn)原理

1膀钠、Cookie的實(shí)現(xiàn)原理

2掏湾、Session的實(shí)現(xiàn)原理

(三)記錄用戶上次訪問時(shí)間的分析

分析需求和流程

(四)

記錄用戶上次訪問時(shí)間的代碼實(shí)現(xiàn)

一裹虫、Cookie的簡單使用

1、獲得從瀏覽器帶過來的Cookie通過HttpServletRequest對象中的方法:getCookies()

2融击、向?yàn)g覽器回寫Cookie通過HttpServletResponse對象中的方法:addCookie(Cookie cookie)

3筑公、Cookie的構(gòu)造Cookie(String name, String value)

二、案例代碼實(shí)現(xiàn)

創(chuàng)建一個(gè)Web項(xiàng)目

創(chuàng)建包結(jié)構(gòu)

代碼實(shí)現(xiàn)

編寫工具類

編寫Servlet

(五)Cookie的分類

一尊浪、案例存在問題

問題描述:

用戶訪問Servlet匣屡,記錄用戶的上次訪問時(shí)間,但是如果用戶將瀏覽器關(guān)閉拇涤,再重新打開瀏覽器訪問程序捣作,程序就會把其當(dāng)成是第一次訪問的用戶(顯示:您好,歡迎來到本網(wǎng)站)

二鹅士、Cookie的分類

1券躁、默認(rèn)級別的Cookie指的是沒有設(shè)置有效時(shí)間的Cookie,默認(rèn)的情況下掉盅,只要關(guān)閉了瀏覽器也拜,Cookie也會被銷毀(Cookie存在于瀏覽器的內(nèi)存中,當(dāng)關(guān)閉了瀏覽器趾痘,Cookie就銷毀了)

2慢哈、持久級別的Cookie指的是具有有效時(shí)間的Cookie,這種Cookie的內(nèi)容不是保存在瀏覽器的內(nèi)存中永票,而是將Cookie的內(nèi)容保存(持久化)到硬盤上卵贱。當(dāng)關(guān)閉瀏覽器滥沫,再次打開時(shí),會加載硬盤上的文件键俱,從而Cookie中的數(shù)據(jù)就不會丟失(六)Cookie的API的概述

一佣谐、構(gòu)造方法

Cookie(String name, String value)

需要傳入字符串類型的名稱和值

二、其他的方法

獲得Cookie的名稱:getName()

獲得Cookie的值:getValue()

設(shè)置Cookie的有效域名:setDomain(String domain)

設(shè)置Cookie的有效路徑:setPath(String uri)

設(shè)置Cookie的有效時(shí)長:setMaxAge(int expiry)

三方妖、代碼改進(jìn)案例問題解決

(七)Cookie的使用細(xì)節(jié)

1狭魂、一個(gè)Cookie只能標(biāo)識一種信息,至少含有一個(gè)標(biāo)識該信息的名稱和值(即鍵值對)

2党觅、一個(gè)web站點(diǎn)可以給一個(gè)瀏覽器發(fā)送多個(gè)Cookie雌澄,一個(gè)Web瀏覽器也可以存儲多個(gè)Web站點(diǎn)的Cookie

3、老版本瀏覽器一般只允許存放300個(gè)Cookie杯瞻,每個(gè)站點(diǎn)最多可以存放20個(gè)Cookie镐牺,每個(gè)Cookie的大小限制4KB,瀏覽器存放的Cookie的大小和個(gè)數(shù)是有限制的

4魁莉、如果創(chuàng)建了一個(gè)Cookie睬涧,并發(fā)送到瀏覽器,默認(rèn)情況下旗唁,它是一個(gè)會話級別的Cookie畦浓,用戶退出瀏覽器就被刪除了

5、如果希望將這個(gè)Cookie存到磁盤上检疫,需要設(shè)置有效時(shí)長讶请,就要調(diào)用set MaxAge(int expiry)方法,以秒為單位

6屎媳、需要手動刪除持久性Cookie的話夺溢,可以將Cookie的有效時(shí)長設(shè)置為0,必須注意:刪除Cookie的時(shí)候烛谊,path必須一致风响,否則無法刪除

(八)Session的概述

一、什么是Session

1丹禀、Session稱為是一次會話状勤,Cookie將用戶產(chǎn)生的私有的數(shù)據(jù)保存到瀏覽器端,Session將用戶產(chǎn)生的私有的數(shù)據(jù)保存到服務(wù)器端

2湃崩、注意:一個(gè)瀏覽器獨(dú)占一個(gè)Session對象荧降。因此,在需要保存用戶數(shù)據(jù)的時(shí)候攒读,服務(wù)器程序可以將用戶數(shù)據(jù)寫到Session對象中朵诫,當(dāng)用戶使用瀏覽器訪問其他程序時(shí),其他程序可以從用戶的Session中取出該用戶的數(shù)據(jù)薄扁,為用戶服務(wù)

二剪返、為什么有Cookie還要有Session

1废累、Cookie的局限性Cookie保存的數(shù)據(jù)是有個(gè)數(shù)和大小的限制的

數(shù)據(jù)是保存在客戶端瀏覽器上的(相對不是很安全)

2、Session的優(yōu)勢

Session沒有個(gè)數(shù)和大小的限制

數(shù)據(jù)是保存在服務(wù)器上的(相對比較安全)

三脱盲、Session如何保存用戶數(shù)據(jù)Session對象由服務(wù)器創(chuàng)建邑滨,開發(fā)人員可以調(diào)用request對象的getSession方法得到Session對象

(九)Session的實(shí)現(xiàn)原理

一、Session的實(shí)現(xiàn)原理分析

服務(wù)器是如何實(shí)現(xiàn)一個(gè)Session為一個(gè)用戶瀏覽器服務(wù)的钱反?

二掖看、Session的實(shí)現(xiàn)原理:

基于Cookie的,基于Cookie回寫了一個(gè)Session的ID

(十)Session作為域?qū)ο蟠嫒?shù)據(jù)

一面哥、Session作為域?qū)ο蟮腁PI

向Session中存入數(shù)據(jù)

set Attribute(String name, Object value)

從Session域中獲取數(shù)據(jù)

getAttribute(String name)

從Session域中移除數(shù)據(jù)

remove? Attribute(String name)

二哎壳、Session作為域?qū)ο蟮淖饔梅秶?/p>

Session作為域?qū)ο螅饔梅秶褪且淮螘挼姆秶形溃淮螘捁殚牛傅氖怯脩舸蜷_瀏覽器,點(diǎn)擊多個(gè)超鏈接吱涉,訪問服務(wù)器資源刹泄,到最后關(guān)閉瀏覽器的過程

(十一)Servlet的域?qū)ο髷?shù)據(jù)訪問范圍的總結(jié)

一、請求范圍(ServletRequest)

1怎爵、何時(shí)創(chuàng)建和銷毀的

創(chuàng)建:當(dāng)用戶服務(wù)器發(fā)送一次請求特石,服務(wù)器創(chuàng)建一Request對象

銷毀:當(dāng)服務(wù)器對這次請求作出了響應(yīng),服務(wù)器就會銷毀這個(gè)Request對象

2疙咸、如何存取數(shù)據(jù)

存數(shù)據(jù)void set? Attribute(String name, Object value);

取數(shù)據(jù)Object get Attribute(String name);

3县匠、作用范圍

范圍是一次請求(轉(zhuǎn)發(fā)就是一次請求)

二、會話范圍(HttpSession)

1撒轮、何時(shí)創(chuàng)建和銷毀的

創(chuàng)建:服務(wù)器端第一次調(diào)用getSession()方法的時(shí)候

銷毀:三種情況

Session過期,默認(rèn)的過期時(shí)間是30分鐘

非正常關(guān)閉服務(wù)器(正常關(guān)閉服務(wù)器時(shí)贼穆,Session會被序列化)

手動調(diào)用session? .invalidate()

2题山、如何存取數(shù)據(jù)

存數(shù)據(jù)void set? Attribute(String name, Object value);

取數(shù)據(jù)Object get Attribute(String name);

3、作用范圍范圍是一次會話(多次請求)

三顶瞳、應(yīng)用范圍(ServletContext)

1、何時(shí)創(chuàng)建和銷毀的

創(chuàng)建:服務(wù)器啟動的時(shí)候就創(chuàng)建了愕秫,會為每個(gè)Web項(xiàng)目創(chuàng)建一個(gè)單獨(dú)的ServletContext對象

銷毀:服務(wù)器關(guān)閉的時(shí)候慨菱,或者項(xiàng)目人服務(wù)器中移除的時(shí)候

2符喝、如何存取數(shù)據(jù)

存數(shù)據(jù)void set? Attribute(String name, Object value);

取數(shù)據(jù)Object get Attribute(String name);

3畏腕、作用范圍

范圍是整個(gè)應(yīng)用的范圍

計(jì)算機(jī)

首頁


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末而线,一起剝皮案震驚了整個(gè)濱河市铭污,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膀篮,老刑警劉巖况凉,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異各拷,居然都是意外死亡刁绒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門烤黍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來知市,“玉大人,你說我怎么就攤上這事速蕊∩┍” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵规哲,是天一觀的道長跟啤。 經(jīng)常有香客問我,道長唉锌,這世上最難降的妖魔是什么隅肥? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮袄简,結(jié)果婚禮上腥放,老公的妹妹穿的比我還像新娘。我一直安慰自己绿语,他們只是感情好秃症,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吕粹,像睡著了一般种柑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匹耕,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天聚请,我揣著相機(jī)與錄音,去河邊找鬼泌神。 笑死良漱,一個(gè)胖子當(dāng)著我的面吹牛舞虱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播母市,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼矾兜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了患久?” 一聲冷哼從身側(cè)響起椅寺,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒋失,沒想到半個(gè)月后返帕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡篙挽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年荆萤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铣卡。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡链韭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出煮落,到底是詐尸還是另有隱情敞峭,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布蝉仇,位于F島的核電站旋讹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏轿衔。R本人自食惡果不足惜沉迹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呀枢。 院中可真熱鬧胚股,春花似錦、人聲如沸裙秋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摘刑。三九已至,卻和暖如春刻坊,著一層夾襖步出監(jiān)牢的瞬間枷恕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工谭胚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徐块,地道東北人未玻。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像胡控,于是被迫代替她去往敵國和親扳剿。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 一昼激、什么是會話 會話可以簡單理解為庇绽,用戶打開一個(gè)瀏覽器,點(diǎn)擊多個(gè)超鏈接訪問服務(wù)器 的 web資源橙困,然后關(guān)閉瀏覽器瞧掺,...
    提筆執(zhí)江山閱讀 113評論 0 0
  • 一辟狈、JSP 1. jsp的介紹 JSP全名為Java Server Pages,中文名叫java服務(wù)器頁面夏跷,本質(zhì)是...
    圣賢與無賴閱讀 532評論 1 0
  • 背景在HTTP協(xié)議的定義中哼转,采用了一種機(jī)制來記錄客戶端和服務(wù)器端交互的信息,這種機(jī)制被稱為cookie拓春,cooki...
    時(shí)芥藍(lán)閱讀 2,363評論 1 17
  • 注:本文轉(zhuǎn)載自前端大全 背景 在HTTP協(xié)議的定義中释簿,采用了一種機(jī)制來記錄客戶端和服務(wù)器端交互的信息,這種機(jī)制被稱...
    楠小忎閱讀 673評論 0 0
  • 2019.8.10 星期六 暴雨 親子日記446 雨從上午就開始下硼莽,下午越下越大庶溶,天氣預(yù)報(bào)還真準(zhǔn),...
    樹言書涵媽咪閱讀 179評論 0 0