day13

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

一蓄坏、什么是會話

? ? 會話可以簡單理解為,用戶打開一個瀏覽器丑念,點(diǎn)擊多個超鏈接訪問服務(wù)器的web資源涡戳,然后關(guān)閉瀏覽器,整個過程稱為是一次會話

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

1渔彰、每個用戶與服務(wù)器進(jìn)行交互過程中,產(chǎn)生一些各自的數(shù)據(jù)推正,程序想要把這些數(shù)據(jù)進(jìn)行保存恍涂,就需要使用會話技術(shù)

2、例如:用戶點(diǎn)擊超鏈接購買一個商品植榕,程序應(yīng)該保存用戶所購買的商品乳丰,以便于用戶點(diǎn)擊結(jié)賬時,可以得到用戶所購買的商品信息

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

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

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

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

1夜郁、Cookie技術(shù)

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

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

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

2、Session技術(shù)

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

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

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

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

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

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

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

分析需求和流程

(四)記錄用戶上次訪問時間的代碼實(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)建一個Web項(xiàng)目

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

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

?? ?? ? 編寫工具類

?? ?? ? 編寫Servlet

(五)Cookie的分類

一耘子、案例存在問題

問題描述:

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

二片林、Cookie的分類

1端盆、默認(rèn)級別的Cookie

指的是沒有設(shè)置有效時間的Cookie,默認(rèn)的情況下费封,只要關(guān)閉了瀏覽器焕妙,Cookie也會被銷毀(Cookie存在于瀏覽器的內(nèi)存中,當(dāng)關(guān)閉了瀏覽器弓摘,Cookie就銷毀了)

2焚鹊、持久級別的Cookie

指的是具有有效時間的Cookie,這種Cookie的內(nèi)容不是保存在瀏覽器的內(nèi)存中韧献,而是將Cookie的內(nèi)容保存(持久化)到硬盤上末患。當(dāng)關(guān)閉瀏覽器,再次打開時锤窑,會加載硬盤上的文件璧针,從而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的有效時長:setMaxAge(int expiry)

三探橱、代碼改進(jìn)

案例問題解決

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

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

2隧膏、一個web站點(diǎn)可以給一個瀏覽器發(fā)送多個Cookie哗讥,一個Web瀏覽器也可以存儲多個Web站點(diǎn)的Cookie

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

4曲稼、如果創(chuàng)建了一個Cookie索绪,并發(fā)送到瀏覽器湖员,默認(rèn)情況下贫悄,它是一個會話級別的Cookie,用戶退出瀏覽器就被刪除了

5娘摔、如果希望將這個Cookie存到磁盤上窄坦,需要設(shè)置有效時長,就要調(diào)用setMaxAge(int expiry)方法凳寺,以秒為單位

6鸭津、需要手動刪除持久性Cookie的話,可以將Cookie的有效時長設(shè)置為0肠缨,必須注意:刪除Cookie的時候逆趋,path必須一致,否則無法刪除

(八)Session的概述

一晒奕、什么是Session

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

2魄眉、注意:一個瀏覽器獨(dú)占一個Session對象。因此闷袒,在需要保存用戶數(shù)據(jù)的時候坑律,服務(wù)器程序可以將用戶數(shù)據(jù)寫到Session對象中,當(dāng)用戶使用瀏覽器訪問其他程序時囊骤,其他程序可以從用戶的Session中取出該用戶的數(shù)據(jù)晃择,為用戶服務(wù)

二、為什么有Cookie還要有Session

1也物、Cookie的局限性

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

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

2宫屠、Session的優(yōu)勢

Session沒有個數(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)一個Session為一個用戶瀏覽器服務(wù)的?

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

? ? 基于Cookie的乌逐,基于Cookie回寫了一個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ū)ο笳闾撸饔梅秶褪且淮螘挼姆秶盥淮螘挘傅氖怯脩舸蜷_瀏覽器洛波,點(diǎn)擊多個超鏈接胰舆,訪問服務(wù)器資源,到最后關(guān)閉瀏覽器的過程

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

一蹬挤、請求范圍(ServletRequest)

1缚窿、何時創(chuàng)建和銷毀的

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

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

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

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

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

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

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

3、作用范圍

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

二吨悍、會話范圍(HttpSession)

1扫茅、何時創(chuàng)建和銷毀的

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

? ? 銷毀:三種情況

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

?? ?? ? 非正常關(guān)閉服務(wù)器(正常關(guān)閉服務(wù)器時育瓜,Session會被序列化)

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

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

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

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

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

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

3、作用范圍

范圍是一次會話(多次請求)

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

1恋脚、何時創(chuàng)建和銷毀的

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

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

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

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

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

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

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

3、作用范圍

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




?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末册倒,一起剝皮案震驚了整個濱河市蚓挤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驻子,老刑警劉巖灿意,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異崇呵,居然都是意外死亡缤剧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門域慷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荒辕,“玉大人汗销,你說我怎么就攤上這事〉种希” “怎么了弛针?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長李皇。 經(jīng)常有香客問我削茁,道長,這世上最難降的妖魔是什么掉房? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任茧跋,我火速辦了婚禮,結(jié)果婚禮上卓囚,老公的妹妹穿的比我還像新娘瘾杭。我一直安慰自己,他們只是感情好捍岳,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布富寿。 她就那樣靜靜地躺著睬隶,像睡著了一般锣夹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苏潜,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天银萍,我揣著相機(jī)與錄音,去河邊找鬼恤左。 笑死贴唇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的飞袋。 我是一名探鬼主播戳气,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巧鸭!你這毒婦竟也來了瓶您?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤纲仍,失蹤者是張志新(化名)和其女友劉穎呀袱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郑叠,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夜赵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了乡革。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寇僧。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡摊腋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嘁傀,到底是詐尸還是另有隱情歌豺,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布心包,位于F島的核電站类咧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蟹腾。R本人自食惡果不足惜痕惋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娃殖。 院中可真熱鬧值戳,春花似錦、人聲如沸炉爆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芬首。三九已至赴捞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間郁稍,已是汗流浹背赦政。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耀怜,地道東北人恢着。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像财破,于是被迫代替她去往敵國和親掰派。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

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