3.20

Cookie & Session

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


一、什么是會(huì)話

? ? 會(huì)話可以簡(jiǎn)單理解為澄成,用戶打開一個(gè)瀏覽器,點(diǎn)擊多個(gè)超鏈接訪問服務(wù)器的web資源畏吓,然后關(guān)閉瀏覽器墨状,整個(gè)過程稱為是一次會(huì)話

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

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

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

3诗越、思考:用戶購買的商品保存在Request或ServletContext中是否可以?

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

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


一臼氨、會(huì)話技術(shù)分類

1掺喻、Cookie技術(shù)

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

(2)當(dāng)用戶使用瀏覽器再次訪問服務(wù)器中的Web資源的時(shí)候感耙,就會(huì)帶著各自的數(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對(duì)象屡拨。

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

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

二哥艇、會(huì)話技術(shù)的實(shí)現(xiàn)原理

1绝编、Cookie的實(shí)現(xiàn)原理

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

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


分析需求和流程

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


一貌踏、Cookie的簡(jiǎn)單使用

1十饥、獲得從瀏覽器帶過來的Cookie

? ? 通過HttpServletRequest對(duì)象中的方法:

?? ??? ?getCookies()

2、向?yàn)g覽器回寫Cookie

? ? 通過HttpServletResponse對(duì)象中的方法:

?? ??? ?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)閉,再重新打開瀏覽器訪問程序亚斋,程序就會(huì)把其當(dāng)成是第一次訪問的用戶(顯示:您好集灌,歡迎來到本網(wǎng)站)

二贱纠、Cookie的分類

1咐旧、默認(rèn)級(jí)別的Cookie

指的是沒有設(shè)置有效時(shí)間的Cookie没讲,默認(rèn)的情況下,只要關(guān)閉了瀏覽器厚掷,Cookie也會(huì)被銷毀(Cookie存在于瀏覽器的內(nèi)存中弟灼,當(dāng)關(guān)閉了瀏覽器级解,Cookie就銷毀了)

2、持久級(jí)別的Cookie

指的是具有有效時(shí)間的Cookie田绑,這種Cookie的內(nèi)容不是保存在瀏覽器的內(nèi)存中勤哗,而是將Cookie的內(nèi)容保存(持久化)到硬盤上。當(dāng)關(guān)閉瀏覽器掩驱,再次打開時(shí)芒划,會(huì)加載硬盤上的文件,從而Cookie中的數(shù)據(jù)就不會(huì)丟失

(六)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í)長(zhǎng):setMaxAge(int expiry)

三、代碼改進(jìn)

案例問題解決

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


1涮帘、一個(gè)Cookie只能標(biāo)識(shí)一種信息拼苍,至少含有一個(gè)標(biāo)識(shí)該信息的名稱和值(即鍵值對(duì))

2、一個(gè)web站點(diǎn)可以給一個(gè)瀏覽器發(fā)送多個(gè)Cookie调缨,一個(gè)Web瀏覽器也可以存儲(chǔ)多個(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è)會(huì)話級(jí)別的Cookie默责,用戶退出瀏覽器就被刪除了

5、如果希望將這個(gè)Cookie存到磁盤上咸包,需要設(shè)置有效時(shí)長(zhǎng)桃序,就要調(diào)用setMaxAge(int expiry)方法,以秒為單位

6烂瘫、需要手動(dòng)刪除持久性Cookie的話媒熊,可以將Cookie的有效時(shí)長(zhǎng)設(shè)置為0,必須注意:刪除Cookie的時(shí)候坟比,path必須一致芦鳍,否則無法刪除

(八)Session的概述


一、什么是Session

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

2籍琳、注意:一個(gè)瀏覽器獨(dú)占一個(gè)Session對(duì)象菲宴。因此贷祈,在需要保存用戶數(shù)據(jù)的時(shí)候,服務(wù)器程序可以將用戶數(shù)據(jù)寫到Session對(duì)象中喝峦,當(dāng)用戶使用瀏覽器訪問其他程序時(shí)势誊,其他程序可以從用戶的Session中取出該用戶的數(shù)據(jù),為用戶服務(wù)

二谣蠢、為什么有Cookie還要有Session

1粟耻、Cookie的局限性

Cookie保存的數(shù)據(jù)是有個(gè)數(shù)和大小的限制的

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

2、Session的優(yōu)勢(shì)

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

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

三眉踱、Session如何保存用戶數(shù)據(jù)

Session對(duì)象由服務(wù)器創(chuàng)建挤忙,開發(fā)人員可以調(diào)用request對(duì)象的getSession方法得到Session對(duì)象

(九)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ù)

?? ?? ??setAttribute(String name, Object value)

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

?? ?? ??getAttribute(String name)

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

?? ?? ??removeAttribute(String name)

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

? ? Session作為域?qū)ο螅饔梅秶褪且淮螘?huì)話的范圍谈宛,一次會(huì)話次哈,指的是用戶打開瀏覽器,點(diǎn)擊多個(gè)超鏈接吆录,訪問服務(wù)器資源窑滞,到最后關(guān)閉瀏覽器的過程

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


一、請(qǐng)求范圍(ServletRequest)

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

? ? 創(chuàng)建:當(dāng)用戶服務(wù)器發(fā)送一次請(qǐng)求哀卫,服務(wù)器創(chuàng)建一個(gè)Request對(duì)象

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

2撬槽、如何存取數(shù)據(jù)

? ? 存數(shù)據(jù)

?? ?? ? void setAttribute(String name, Object value);

? ? 取數(shù)據(jù)

?? ?? ? Object getAttribute(String name);

3此改、作用范圍

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

二、會(huì)話范圍(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會(huì)被序列化)

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

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

? ? 存數(shù)據(jù)

?? ?? ? void setAttribute(String name, Object value);

? ? 取數(shù)據(jù)

?? ?? ? Object getAttribute(String name);

3移剪、作用范圍

范圍是一次會(huì)話(多次請(qǐng)求)

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

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

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

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

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

? ? 存數(shù)據(jù)

?? ?? ? void setAttribute(String name, Object value);

? ? 取數(shù)據(jù)

?? ?? ? Object getAttribute(String name);

3赶站、作用范圍

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



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末幔虏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贝椿,更是在濱河造成了極大的恐慌想括,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烙博,死亡現(xiàn)場(chǎng)離奇詭異瑟蜈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渣窜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門铺根,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乔宿,你說我怎么就攤上這事位迂。” “怎么了详瑞?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵掂林,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我坝橡,道長(zhǎng)泻帮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任计寇,我火速辦了婚禮锣杂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘番宁。我一直安慰自己元莫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布蝶押。 她就那樣靜靜地躺著踱蠢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪播聪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天布隔,我揣著相機(jī)與錄音离陶,去河邊找鬼。 笑死衅檀,一個(gè)胖子當(dāng)著我的面吹牛招刨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哀军,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼沉眶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼打却!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谎倔,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤柳击,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后片习,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捌肴,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年藕咏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了状知。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡孽查,死狀恐怖饥悴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盲再,我是刑警寧澤西设,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站洲胖,受9級(jí)特大地震影響济榨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绿映,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一擒滑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叉弦,春花似錦丐一、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至樱拴,卻和暖如春柠衍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晶乔。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工珍坊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人正罢。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓阵漏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子履怯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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

  • 背景在HTTP協(xié)議的定義中回还,采用了一種機(jī)制來記錄客戶端和服務(wù)器端交互的信息,這種機(jī)制被稱為cookie叹洲,cooki...
    時(shí)芥藍(lán)閱讀 2,357評(píng)論 1 17
  • 注:本文轉(zhuǎn)載自前端大全 背景 在HTTP協(xié)議的定義中柠硕,采用了一種機(jī)制來記錄客戶端和服務(wù)器端交互的信息,這種機(jī)制被稱...
    楠小忎閱讀 669評(píng)論 0 0
  • 1. cookie 1.1 什么是cookie cookie 是存儲(chǔ)于訪問者的計(jì)算機(jī)中的變量疹味。每當(dāng)同一臺(tái)計(jì)算機(jī)通過...
    cbw100閱讀 4,057評(píng)論 0 13
  • 寫在前面 cookie和session的區(qū)別: 1仅叫、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服...
    Pitfalls閱讀 1,522評(píng)論 0 17
  • 職場(chǎng)媽媽:老娘我造了什么孽糙捺,為什么要生孩子诫咱! 江湖遠(yuǎn),套路深洪灯,勇敢素顏坎缭,解構(gòu)走心,企業(yè)江湖里的那些事兒签钩,咱們翻譯成...
    小旅閱讀 285評(píng)論 0 1