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

下載本文檔

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

文檔簡介

北京傳智播客教育,會話管理,王昭珽,北京傳智播客教育,會話,問題:什么是會話?會話可簡單理解為:用戶開一個(gè)瀏覽器,點(diǎn)擊多個(gè)超鏈接,訪問服務(wù)器多個(gè)web資源,然后關(guān)閉瀏覽器,整個(gè)過程稱之為一個(gè)會話。會話過程中要解決的一些問題?每個(gè)用戶在使用瀏覽器與服務(wù)器進(jìn)行會話的過程中,不可避免各自會產(chǎn)生一些數(shù)據(jù),程序要想辦法為每個(gè)用戶保存這些數(shù)據(jù)。例如:用戶點(diǎn)擊超鏈接通過一個(gè)servlet購買了一個(gè)商品,程序應(yīng)該想辦法保存用戶購買的商品,以便于用戶點(diǎn)結(jié)帳servlet時(shí),結(jié)帳servlet可以得到用戶購買的商品為用戶結(jié)帳。思考:用戶購買的商品保存在request或servletContext中行不行?,北京傳智播客教育,保存會話數(shù)據(jù)的兩種技術(shù),CookieCookie是客戶端技術(shù),程序把每個(gè)用戶的數(shù)據(jù)以cookie的形式寫給用戶各自的瀏覽器。當(dāng)用戶使用瀏覽器再去訪問服務(wù)器中的web資源時(shí),就會帶著各自的數(shù)據(jù)去。這樣,web資源處理的就是用戶各自的數(shù)據(jù)了。SessionSession是服務(wù)器端技術(shù),利用這個(gè)技術(shù),服務(wù)器在運(yùn)行時(shí)可以為每一個(gè)用戶的瀏覽器創(chuàng)建一個(gè)其獨(dú)享的session對象,由于session為用戶瀏覽器獨(dú)享,所以用戶在訪問服務(wù)器的web資源時(shí),可以把各自的數(shù)據(jù)放在各自的session中,當(dāng)用戶再去訪問服務(wù)器中的其它web資源時(shí),其它web資源再從用戶各自的session中取出數(shù)據(jù)為用戶服務(wù)。,北京傳智播客教育,Cookie技術(shù)-放映,瀏覽器,服務(wù)器,servlet1,servlet2,Set-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.getAttribute(name);,Session(a)name=洗衣機(jī),Session(b)name=電視,Session(c)name=冰箱,北京傳智播客教育,CookieAPI,javax.servlet.http.Cookie類用于創(chuàng)建一個(gè)Cookie,response接口也中定義了一個(gè)addCookie方法,它用于在其響應(yīng)頭中增加一個(gè)相應(yīng)的Set-Cookie頭字段。同樣,request接口中也定義了一個(gè)getCookies方法,它用于獲取客戶端提交的Cookie。Cookie類的方法:publicCookie(Stringname,Stringvalue)setValue與getValue方法setMaxAge與getMaxAge方法(秒)setPath與getPath方法setDomain與getDomain方法getName方法,北京傳智播客教育,Cookie應(yīng)用,顯示用戶上次訪問時(shí)間,北京傳智播客教育,Cookie細(xì)節(jié),一個(gè)Cookie只能標(biāo)識一種信息,它至少含有一個(gè)標(biāo)識該信息的名稱(NAME)和設(shè)置值(VALUE)。一個(gè)WEB站點(diǎn)可以給一個(gè)WEB瀏覽器發(fā)送多個(gè)Cookie,一個(gè)WEB瀏覽器也可以存儲多個(gè)WEB站點(diǎn)提供的Cookie。瀏覽器一般只允許存放300個(gè)Cookie,每個(gè)站點(diǎn)最多存放20個(gè)Cookie,每個(gè)Cookie的大小限制為4KB。如果創(chuàng)建了一個(gè)cookie,并將他發(fā)送到瀏覽器,默認(rèn)情況下它是一個(gè)會話級別的cookie(即存儲在瀏覽器的內(nèi)存中),用戶退出瀏覽器之后即被刪除。若希望瀏覽器將該cookie存儲在磁盤上,則需要使用maxAge,并給出一個(gè)以秒為單位的時(shí)間。將最大時(shí)效設(shè)為0則是命令瀏覽器刪除該cookie。注意,刪除cookie時(shí),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ā),瀏覽器,Servlet(根據(jù)ID顯示商品詳細(xì)信息)發(fā)送Cookie,Id=2,bookHistory=1,bookHistory=1,Id=1,bookHistory=1-2,bookHistory=1-2,.,北京傳智播客教育,Session,王昭珽,北京傳智播客教育,session,在WEB開發(fā)中,服務(wù)器可以為每個(gè)用戶瀏覽器創(chuàng)建一個(gè)會話對象(session對象),注意:一個(gè)瀏覽器獨(dú)占一個(gè)session對象(默認(rèn)情況下)。因此,在需要保存用戶數(shù)據(jù)時(shí),服務(wù)器程序可以把用戶數(shù)據(jù)寫到用戶瀏覽器獨(dú)占的session中,當(dāng)用戶使用瀏覽器訪問其它程序時(shí),其它程序可以從用戶的session中取出該用戶的數(shù)據(jù),為用戶服務(wù)。Session和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);,Session(a)name=洗衣機(jī),Session(b)name=電視,Session(c)name=冰箱,Session小實(shí)驗(yàn):使用IE訪問某一個(gè)servlet,其它IE可以取到這個(gè)servlet存的數(shù)據(jù)嗎?,注意,雖然代碼相同,但不同瀏覽器得到的各自的數(shù)據(jù),北京傳智播客教育,session實(shí)現(xiàn)原理,疑問:服務(wù)器是如何實(shí)現(xiàn)一個(gè)session為一個(gè)用戶瀏覽器服務(wù)的?,瀏覽器,瀏覽器,servlet1session=request.getSession(),Servlet2session=request.getsession(),SessionId=111,SessionId=222,cookie:Jsessionid=111,cookie:Jsessionid=111,cookie:Jsessionid=222,cookie:Jsessionid=222,問題:如何實(shí)現(xiàn)多個(gè)IE瀏覽器共享同一session?(應(yīng)用:關(guān)掉IE后,再開IE,上次購買的商品還在。),.實(shí)驗(yàn),北京傳智播客教育,session案例,使用Session完成簡單的購物功能,北京傳智播客教育,IE禁用Cookie后的session處理,實(shí)驗(yàn)演示禁用Cookie后servlet共享數(shù)據(jù)導(dǎo)致的問題。解決方案:URL重寫response.encodeRedirectURL(java.lang.Stringurl)用于對sendRedirect方法后的url地址進(jìn)行重寫。response.encodeURL(java.lang.Stringurl)用于對表單action和超鏈接的url地址進(jìn)行重寫附加:Session的失效Web.xml文件配置session失效時(shí)間,北京傳智播客教育,session案例,使用Session完成用戶登陸利用Session防止表單重復(fù)提交利用Session實(shí)現(xiàn)一次性驗(yàn)證碼,北京傳智播客教育,session案例防止表單重復(fù)提交,不足:但用戶單擊”刷新”,或單擊”后退”再次提交表單,將導(dǎo)致表單重復(fù)提交,北京傳智播客教育,session案例防止表單重復(fù)提交,表單頁面由servlet程序生成,servlet為每次產(chǎn)生的表單頁面分配一個(gè)唯一的隨機(jī)標(biāo)識號,并在FORM表單的一個(gè)隱藏字段中設(shè)置這個(gè)標(biāo)識號,同時(shí)在當(dāng)前用戶的Session域中保存這個(gè)標(biāo)識號。當(dāng)用戶提交FORM表單時(shí),負(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)識號字段,編寫工具類生成表單標(biāo)識號:TokenProcessor,北京傳智播客教育,session案例一次性校驗(yàn)碼,一次性驗(yàn)證碼的主要目的就是為了限制人們利用工具

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論