




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第三章 Servlet容器模型第1頁(yè),共22頁(yè)。課程目標(biāo) 會(huì)話的基本原理及其常用方法了解HttpSession原理掌握如何使用HttpSession會(huì)話管理ServletContext接口第2頁(yè),共22頁(yè)。1、會(huì)話管理的基本原理基本原理使用隱藏域使用Cookie類使用URL重寫第3頁(yè),共22頁(yè)。會(huì)話管理的基本原理Http協(xié)議為無(wú)狀態(tài)通信協(xié)議,但Web應(yīng)用程序的有些功能必須要多次請(qǐng)求來(lái)完成,這種記得此次請(qǐng)求與之后請(qǐng)求關(guān)系的方式稱為會(huì)話管理。實(shí)現(xiàn)會(huì)話管理的幾種方式使用隱藏域使用URL重寫HttpSession使用Cookie第4頁(yè),共22頁(yè)。使用隱藏域隱藏域,就是將上頁(yè)的信息作為隱藏域傳遞給下一頁(yè)
2、關(guān)鍵代碼第5頁(yè),共22頁(yè)。使用URL重寫URL重寫,就是用Get請(qǐng)求參數(shù)的應(yīng)用,當(dāng)服務(wù)器響應(yīng)瀏覽器上一次請(qǐng)求時(shí),將某些相關(guān)信息用超鏈接方式響應(yīng)給瀏覽器,超鏈接中包括請(qǐng)求參數(shù)信息out.println(“+hello+”);第6頁(yè),共22頁(yè)。2、HttpSession的會(huì)話管理會(huì)話原理機(jī)制:HttpSessionHttpSession對(duì)象的ID如何使用HttpSession對(duì)象Httpsession對(duì)象的生命周期第7頁(yè),共22頁(yè)。2.1 會(huì)話原理機(jī)制:HttpSessionHttpSession由Tomcat服務(wù)器負(fù)責(zé)創(chuàng)建,session是實(shí)現(xiàn)了HttpSession接口類的一個(gè)實(shí)例 HttpS
3、ession對(duì)象用來(lái)記錄客戶與服務(wù)器的連接信息第8頁(yè),共22頁(yè)。2.2 HttpSession對(duì)象的ID當(dāng)客戶首次訪問(wèn)WEB應(yīng)用程序時(shí),Tomcat服務(wù)器創(chuàng)建一個(gè)Httpsession對(duì)象,存放各個(gè)頁(yè)面提交的信息;Httpsession對(duì)象被分配了一個(gè)String類型的ID,Tomcat服務(wù)器將ID發(fā)送到客戶端,存放在客戶的Cookie中;在會(huì)話期內(nèi),同一用戶在同一Web服務(wù)目錄中的各個(gè)頁(yè)面的Httpsession對(duì)象是相同的;不同用戶的Httpsession對(duì)象互不相同,具有不同的ID舉例:第9頁(yè),共22頁(yè)。2.3 如何使用HttpSession對(duì)象利用Httpsession對(duì)象存儲(chǔ)數(shù)據(jù)(1
4、)public void setAttribute(String key,Object obj) 將參數(shù)Object指定的對(duì)象obj添加到session對(duì)象中,并為添加的對(duì)象指定了一個(gè)索引關(guān)鍵字,如果添加的兩個(gè)對(duì)象的關(guān)鍵字相同,則先前添加的對(duì)象被清除。(2)public Object getAttibute(String key) 獲取session對(duì)象含有的關(guān)鍵字是key的對(duì)象。由于任何對(duì)象都可以添加到session對(duì)象中,因此用該方法取回對(duì)象時(shí),應(yīng)強(qiáng)制轉(zhuǎn)化為原來(lái)的類型。第10頁(yè),共22頁(yè)。2.3 如何使用HttpSession對(duì)象(3)public Enumeration getAttri
5、buteNames() session對(duì)象調(diào)用該方法產(chǎn)生一個(gè)枚舉對(duì)象,該枚舉對(duì)象使用nextElemets()遍歷session中的各個(gè)對(duì)象所對(duì)應(yīng)的關(guān)鍵字。(4)public void removeAttribute(String name) session對(duì)象調(diào)用該方法移掉關(guān)鍵字key對(duì)應(yīng)的對(duì)象 舉例:main.jsp, food.jsp,loginServlet.java,foodCount.java第11頁(yè),共22頁(yè)。舉例:購(gòu)物車loginServlet.java: 獲取名字存入session對(duì)象session.setAttribute(“customerName”,name);food
6、Count.java: /選取各種食品存入session對(duì)象String foodName = request.getParameterValues(choice); if(foodName!=null) for(int k=0;kfoodName.length;k+) session.setAttribute(foodNamek,foodNamek); 第12頁(yè),共22頁(yè)。舉例:購(gòu)物車/顯示姓名和所選商品Enumeration enumGoods=session.getAttributeNames();out.println(購(gòu)物車中的商品:);while(enumGoods.hasMore
7、Elements() String key= (String) enumGoods. nextElement() ;String goods=(String) session. getAttribute(key);if(!(goods.equals(personName) out.println(goods+); 第13頁(yè),共22頁(yè)。思考并練習(xí)重新選購(gòu)時(shí)如何能夠?qū)⒃瓉?lái)的選購(gòu)記錄取消?能夠顯示價(jià)錢,并能夠結(jié)賬計(jì)算價(jià)錢,要如何進(jìn)行改進(jìn)?按照訂單的一般設(shè)計(jì),如果還能夠選擇件數(shù)、折扣等,又要如何設(shè)計(jì)?(留待以后的章節(jié)來(lái)討論)第14頁(yè),共22頁(yè)。2.4 session對(duì)象的生命期限從用戶開(kāi)始連接Web服
8、務(wù)器到中斷與服務(wù)器的連接發(fā)呆狀態(tài):兩次請(qǐng)求的最大間隔時(shí)間,可通過(guò)conf文件夾下的web.xml修改設(shè)置生命周期的相關(guān)方法invalidate():session失效getCreationTime():創(chuàng)建對(duì)象的時(shí)間第15頁(yè),共22頁(yè)。2.5 URL重寫session對(duì)象與客戶對(duì)應(yīng)關(guān)系的建立依賴于客戶端瀏覽器是否支持Cookie??赏ㄟ^(guò)URL重寫實(shí)現(xiàn)Session對(duì)象的唯一性,將ID在頁(yè)面間傳遞過(guò)去String str= response.encodeRedirectURL (地址 );連接目標(biāo)改成第16頁(yè),共22頁(yè)。3 使用CookieCookie是瀏覽器存儲(chǔ)信息的一種方式,服務(wù)器響應(yīng)瀏覽器
9、的set-cookie標(biāo)頭,瀏覽器收到標(biāo)頭與數(shù)值后,會(huì)將其以文件形式存儲(chǔ)在計(jì)算機(jī)上,這個(gè)文件就是CookieCookie的常見(jiàn)方法新建Cookiepublic Cookie(String name,String value)Cookie cookie=new Cookie(“Cookie”,”Catme”);/新建Cookie 設(shè)置Coookie的最大存活時(shí)間,單位為秒,如果是負(fù)值,表示永不存儲(chǔ),0表示刪除Cookiepublic void setMaxAge(int expiry)cookie.setMaxAge(7*24*60*60); /設(shè)置一個(gè)星期的最大存活向客戶端發(fā)送Cookie對(duì)象
10、response.addCookie(cookie);第17頁(yè),共22頁(yè)。使用Cookie舉例向客戶端發(fā)送Cookie對(duì)象舉例:SendCookieServlet.java從客戶端讀取Cookie對(duì)象(單個(gè))舉例:ReadCookieServlet.java從客戶端讀取Cookie對(duì)象(全部)舉例:ReadAllCookieServlet.java第18頁(yè),共22頁(yè)。使用Cookie自動(dòng)登錄舉例:login.jsp 登陸頁(yè)面CheckUser.java 判斷是否登陸頁(yè)面,依據(jù)此思想可以寫一個(gè)過(guò)濾器,匹配給所有需要登陸才能訪問(wèn)的頁(yè)面。第19頁(yè),共22頁(yè)。Servlet接口Servlet可以使用javax.servlet.ServletContext對(duì)象來(lái)獲得Web應(yīng)用程序的初始化參數(shù)及其相關(guān)信息。具體API得到ServletContext引用ServletContext context=getServletContext()ServletContext context=getServletConfig().getServletContext()獲得應(yīng)有程序初始化參數(shù),即web.xml中設(shè)置的信息上下文初始化參數(shù)public String getInitParameter(String name)獲得資源:getResource()和getResourceAsStream(),訪問(wèn)任
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)空間精裝修成品保護(hù)方案
- 幼兒園食堂安全管理合同書(shū)
- 購(gòu)房合同新政策解析
- 住宅分配合同樣本
- 員工離職知識(shí)產(chǎn)權(quán)合同
- 房產(chǎn)中介擔(dān)保借款合同示例
- 度上海精裝修住宅合同范本
- 技術(shù)支持與服務(wù)合同范文2025年標(biāo)準(zhǔn)版
- 2025年車輛承包經(jīng)營(yíng)合同
- 2025年醫(yī)療設(shè)備產(chǎn)品策劃區(qū)域銷售代理合同
- 2024年03月浙江南潯銀行春季招考筆試歷年參考題庫(kù)附帶答案詳解
- 執(zhí)行立案申請(qǐng)書(shū)模版
- 《高點(diǎn)全景視頻監(jiān)控聯(lián)網(wǎng)技術(shù)要求》
- 智能建筑外掛電梯安裝方案
- 2024屆廣東省廣州市高三一模考試英語(yǔ)試題講評(píng)課件
- 數(shù)字電子技術(shù)(廣東工業(yè)大學(xué))知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋廣東工業(yè)大學(xué)
- 安徽省淮北一中2025屆高三沖刺模擬數(shù)學(xué)試卷含解析
- 白云山生態(tài)停車場(chǎng)工程施工組織設(shè)計(jì)施工方案
- 2024年四川省綿陽(yáng)市中考語(yǔ)文試卷(附真題答案)
- 2022年CSCO軟組織肉瘤診療指南
- 【MOOC】Office高級(jí)應(yīng)用-成都信息工程大學(xué) 中國(guó)大學(xué)慕課MOOC答案
評(píng)論
0/150
提交評(píng)論