課件0104會話管理_第1頁
課件0104會話管理_第2頁
課件0104會話管理_第3頁
課件0104會話管理_第4頁
課件0104會話管理_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、北京傳智播客教育 會話管理傳智 . 陸遜北京傳智播客教育 會話問題:什么是會話?會話可簡單理解為:用戶開一個瀏覽器,點(diǎn)擊多個超鏈接,訪問服務(wù)器多個web資源,然后關(guān)閉瀏覽器,整個過程稱之為一個會話。會話過程中要解決的一些問題?每個用戶在使用瀏覽器與服務(wù)器進(jìn)行會話的過程中,不可避免各自會產(chǎn)生一些數(shù)據(jù),程序要想辦法為每個用戶保存這些數(shù)據(jù)。例如:用戶點(diǎn)擊超鏈接通過一個servlet購買了一個商品,程序應(yīng)該想辦法保存用戶購買的商品,以便于用戶點(diǎn)結(jié)帳servlet時,結(jié)帳servlet可以得到用戶購買的商品為用戶結(jié)帳。思考:用戶購買的商品保存在request或servletContext中行不行?北京傳

2、智播客教育 保存會話數(shù)據(jù)的兩種技術(shù)CookieCookie是客戶端技術(shù),程序把每個用戶的數(shù)據(jù)以cookie的形式寫給用戶各自的瀏覽器。當(dāng)用戶使用瀏覽器再去訪問服務(wù)器中的web資源時,就會帶著各自的數(shù)據(jù)去。這樣,web資源處理的就是用戶各自的數(shù)據(jù)了。HttpSessionSession是服務(wù)器端技術(shù),利用這個技術(shù),服務(wù)器在運(yùn)行時可以為每一個用戶的瀏覽器創(chuàng)建一個其獨(dú)享的HttpSession對象,由于session為用戶瀏覽器獨(dú)享,所以用戶在訪問服務(wù)器的web資源時,可以把各自的數(shù)據(jù)放在各自的session中,當(dāng)用戶再去訪問服務(wù)器中的其它web資源時,其它web資源再從用戶各自的session中取

3、出數(shù)據(jù)為用戶服務(wù)。北京傳智播客教育 Cookie技術(shù)-放映瀏覽器服務(wù)器servlet1servlet2Set-Cookie2: name=洗衣機(jī)Set-Cookie2: name=洗衣機(jī)name=洗衣機(jī)IE緩存區(qū)cookie: name=洗衣機(jī)cookie: name=洗衣機(jī).北京傳智播客教育 Session-放映瀏覽器瀏覽器瀏覽器Servlet1(購買)session = request.getSession()Session.setAttribute(name,objcet)Servlet2(結(jié)帳)Session = request.getsession()obj = Session.ge

4、tAttribute(name);Session(a)name=洗衣機(jī)Session(b)name=電視Session(c)name=冰箱北京傳智播客教育 Cookie APIjavax.servlet.http.Cookie類用于創(chuàng)建一個Cookie,response接口中定義了一個addCookie方法,它用于在其響應(yīng)頭中增加一個相應(yīng)的Set-Cookie頭字段。 同樣,request接口中也定義了一個getCookies方法,它用于獲取客戶端提交的Cookie。Cookie類的方法: public Cookie(String name,String value)setValue與getV

5、alue方法 setMaxAge與getMaxAge方法 (秒)setPath與getPath方法setDomain與getDomain方法getName方法 北京傳智播客教育 Cookie應(yīng)用顯示用戶上次訪問時間北京傳智播客教育 Cookie細(xì)節(jié)一個Cookie只能標(biāo)識一種信息,它至少含有一個標(biāo)識該信息的名稱(NAME)和設(shè)置值(VALUE)。 一個WEB站點(diǎn)可以給一個WEB瀏覽器發(fā)送多個Cookie,一個WEB瀏覽器也可以存儲多個WEB站點(diǎn)提供的Cookie。瀏覽器一般只允許存放300個Cookie,每個站點(diǎn)最多存放20個Cookie,每個Cookie的大小限制為4KB。如果創(chuàng)建了一個co

6、okie,并將他發(fā)送到瀏覽器,默認(rèn)情況下它是一個會話級別的cookie(即存儲在瀏覽器的內(nèi)存中),用戶退出瀏覽器之后即被刪除。若希望瀏覽器將該cookie存儲在磁盤上,則需要使用maxAge,并給出一個以秒為單位的時間。將最大時效設(shè)為0則是命令瀏覽器刪除該cookie。注意,刪除cookie時,path必須一致,否則不會刪除北京傳智播客教育 Cookie應(yīng)用北京傳智播客教育 Cookie應(yīng)用顯示用戶上次瀏覽過的商品北京傳智播客教育 顯示上次瀏覽商品的實(shí)現(xiàn)過程顯示網(wǎng)站商品的servlet:Javaweb開發(fā)Jdbc開發(fā)Spring開發(fā)您曾經(jīng)瀏覽過的商品Javaweb開發(fā)Jdbc開發(fā)瀏覽器Serv

7、let(根據(jù)ID顯示商品詳細(xì)信息)發(fā)送CookieId=2bookHistory=1bookHistory=1Id=1bookHistory=1-2bookHistory=1-2.北京傳智播客教育 HttpSession傳智 . 陸遜北京傳智播客教育 session在WEB開發(fā)中,服務(wù)器可以為每個用戶瀏覽器創(chuàng)建一個會話對象(session對象),注意:一個瀏覽器獨(dú)占一個session對象(默認(rèn)情況下)。因此,在需要保存用戶數(shù)據(jù)時,服務(wù)器程序可以把用戶數(shù)據(jù)寫到用戶瀏覽器獨(dú)占的session中,當(dāng)用戶使用瀏覽器訪問其它程序時,其它程序可以從用戶的session中取出該用戶的數(shù)據(jù),為用戶服務(wù)。Ses

8、sion和Cookie的主要區(qū)別在于:Cookie是把用戶的數(shù)據(jù)寫給用戶的瀏覽器。Session技術(shù)把用戶的數(shù)據(jù)寫到用戶獨(dú)占的session中。Session對象由服務(wù)器創(chuàng)建,開發(fā)人員可以調(diào)用request對象的getSession方法得到session對象。北京傳智播客教育 session瀏覽器瀏覽器瀏覽器servlet1Session = request.getsession()Session.setAttribute(name,objcet)Servlet2Session = request.getsession()obj = Session.getAttribute(name);Ses

9、sion(a)name=洗衣機(jī)Session(b)name=電視Session(c)name=冰箱Session小實(shí)驗:使用IE訪問某一個servlet,其它IE可以取到這個servlet存的數(shù)據(jù)嗎?注意,雖然代碼相同,但不同瀏覽器得到的各自的數(shù)據(jù)北京傳智播客教育 session實(shí)現(xiàn)原理疑問:服務(wù)器是如何實(shí)現(xiàn)一個session為一個用戶瀏覽器服務(wù)的?瀏覽器瀏覽器servlet1session = request.getSession()Servlet2session = request.getsession()SessionId=111SessionId=222cookie:Jsessioni

10、d=111cookie:Jsessionid=111cookie:Jsessionid=222cookie:Jsessionid=222問題:如何實(shí)現(xiàn)多個IE瀏覽器共享同一session?(應(yīng)用:關(guān)掉IE后,再開IE,上次購買的商品還在。).實(shí)驗北京傳智播客教育 session案例使用Session完成簡單的購物功能北京傳智播客教育 session案例使用Session完成用戶登陸;利用Session實(shí)現(xiàn)一次性驗證碼利用Session防止表單重復(fù)提交北京傳智播客教育 session案例防止表單重復(fù)提交不足:但用戶單擊”刷新”,或單擊”后退”再次提交表單,將導(dǎo)致表單重復(fù)提交北京傳智播客教育 se

11、ssion案例防止表單重復(fù)提交表單頁面由servlet程序生成,servlet為每次產(chǎn)生的表單頁面分配一個唯一的隨機(jī)標(biāo)識號,并在FORM表單的一個隱藏字段中設(shè)置這個標(biāo)識號,同時在當(dāng)前用戶的Session域中保存這個標(biāo)識號。 當(dāng)用戶提交FORM表單時,負(fù)責(zé)處理表單提交的serlvet得到表單提交的標(biāo)識號,并與session中存儲的標(biāo)識號比較,如果相同則處理表單提交,處理完后清除當(dāng)前用戶的Session域中存儲的標(biāo)識號。在下列情況下,服務(wù)器程序?qū)⒕芙^用戶提交的表單請求:存儲Session域中的表單標(biāo)識號與表單提交的標(biāo)識號不同當(dāng)前用戶的Session中不存在表單標(biāo)識號用戶提交的表單數(shù)據(jù)中沒有標(biāo)識號字

12、段編寫工具類生成表單標(biāo)識號:TokenProcessor北京傳智播客教育 session案例一次性校驗碼一次性驗證碼的主要目的就是為了限制人們利用工具軟件來暴力猜測密碼。 服務(wù)器程序接收到表單數(shù)據(jù)后,首先判斷用戶是否填寫了正確的驗證碼,只有該驗證碼與服務(wù)器端保存的驗證碼匹配時,服務(wù)器程序才開始正常的表單處理流程。 密碼猜測工具要逐一嘗試每個密碼的前題條件是先輸入正確的驗證碼,而驗證碼是一次性有效的,這樣基本上就阻斷了密碼猜測工具的自動地處理過程。 北京傳智播客教育 IE禁用Cookie后的session處理實(shí)驗演示禁用Cookie后servlet共享數(shù)據(jù)導(dǎo)致的問題。解決方案:URL重寫response. encodeRedirectURL(java.lang.Stringur

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論