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

下載本文檔

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

文檔簡介

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論