版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JSP實(shí)現(xiàn)數(shù)據(jù)傳遞和保存
線(xiàn)上線(xiàn)下平臺(tái)預(yù)習(xí)2/41本課目標(biāo)學(xué)完本次課程后,你能夠:掌握request和response的使用解決頁(yè)面中出現(xiàn)的中文亂碼掌握轉(zhuǎn)發(fā)和重定向的區(qū)別掌握session存取數(shù)據(jù)理解cookie理解application3/41概述任務(wù)實(shí)現(xiàn)新聞系統(tǒng)的用戶(hù)注冊(cè)內(nèi)容requestresponse4/41獲取表單提交的數(shù)據(jù)-1我們?cè)诰W(wǎng)頁(yè)的表單中填入數(shù)據(jù),提交表單后,數(shù)據(jù)被提交到哪里去了?JSP問(wèn)題5/41獲取表單提交的數(shù)據(jù)-2請(qǐng)求對(duì)象:requestpublicStringgetParameter(Stringname)示例HTML代碼:<inputtype="text"name="userName"/>JSP代碼:StringuserName =request.getParameter("userName");演示示例1:獲取表單提交的數(shù)據(jù)6/41get與post區(qū)別比較項(xiàng)Getpost參數(shù)出現(xiàn)在URL中是否長(zhǎng)度限制有無(wú)安全性低高URL可傳播是否7/41獲取同名的多個(gè)參數(shù)<inputtype="checkbox"name="mailId"value="10001"/><inputtype="checkbox"name="mailId"value="10002"/><inputtype="checkbox"name="mailId"value="10003"/><inputtype="checkbox"name="mailId"value="10004"/><inputtype="checkbox"name="mailId"value="10005"/>String[]mailIds=request.getParameterValues("mailId");if(mailIds!=null&&mailIds.length!=0){ //循環(huán)mailIds訪(fǎng)問(wèn)提交的數(shù)據(jù)}else{ //未提交與參數(shù)mailId相關(guān)的數(shù)據(jù)}8/41request對(duì)象常用方法方法名稱(chēng)說(shuō)明StringgetParameter(Stringname)根據(jù)表單組件名稱(chēng)獲取提交數(shù)據(jù)String[]getParameterValues(Stringname)獲取表單組件對(duì)應(yīng)多個(gè)值時(shí)的請(qǐng)求數(shù)據(jù)voidsetCharacterEncoding(Stringcharset)指定每個(gè)請(qǐng)求的編碼RequestDispatchergetRequestDispatcher(Stringpath)返回一個(gè)RequestDispatcher對(duì)象,該對(duì)象的forward()方法用于轉(zhuǎn)發(fā)請(qǐng)求9/41內(nèi)置對(duì)象JSP已經(jīng)準(zhǔn)備好的,可以直接使用的對(duì)象請(qǐng)求對(duì)象:request輸出對(duì)象:out響應(yīng)對(duì)象:response應(yīng)用程序?qū)ο螅篴pplication會(huì)話(huà)對(duì)象:session頁(yè)面上下文對(duì)象:pageContext頁(yè)面對(duì)象:page配置對(duì)象:config異常對(duì)象:exception10/41需求說(shuō)明編寫(xiě)登錄頁(yè)面(userLogin.jsp),表單包含字段:用戶(hù)名和密碼提交表單到loginSuccess.jsp頁(yè)面,并在該頁(yè)面中顯示提交的用戶(hù)名和密碼分析在loginSuccess.jsp中使用request取出表單提交的數(shù)據(jù)在頁(yè)面中顯示課堂練習(xí)完成時(shí)間:5分鐘共性問(wèn)題集中講解11/41JSP中默認(rèn)使用的字符編碼方式:iso-8859-1,不支持中文常見(jiàn)的支持中文的編碼方式中文亂碼你提交的是中文用戶(hù)名嗎?編碼方式收錄的字符gb2312常用簡(jiǎn)體漢字gbk簡(jiǎn)體和繁體漢字utf-8所有國(guó)家需要的字符問(wèn)題12/41解決中文亂碼設(shè)置請(qǐng)求和響應(yīng)的編碼方式request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");<%@
pagelanguage="java"contentType="text/html;charset=utf-8"%>get請(qǐng)求出現(xiàn)亂碼治標(biāo)的方法:newString(s.getBytes("iso-8859-1"),"utf-8");治本的方法:配置tomcat\conf\server.xml文件URIEncoding="UTF-8"useBodyEncodingForURI="true"<ConnectorconnectionTimeout="20000"port="8080"protocol="HTTP/1.1"redirectPort="8443"URIEncoding="UTF-8"/>演示示例2:中文亂碼處理13/41在請(qǐng)求中存取屬性-1在請(qǐng)求中保存屬性publicvoidsetAttribute(Stringname,Objecto)request.setAttribute("mess","注冊(cè)失敗");在請(qǐng)求中獲取屬性publicObjectgetAttribute(Stringname)屬性名屬性值引用類(lèi)型屬性名屬性值1、在使用屬性值的時(shí)候要做非空判斷,否則會(huì)出現(xiàn)空指針異常2、它的返回值類(lèi)型是Object類(lèi)型,需要做數(shù)據(jù)類(lèi)型的轉(zhuǎn)換注意14/41在請(qǐng)求中存取屬性-2你會(huì)這樣寫(xiě)嗎?Stringmess=(String)request.getAttribute("mess");if(mess!=null){//在請(qǐng)求中取到"mess"屬性對(duì)應(yīng)的屬性值,正常使用mess數(shù)據(jù)}else{//在請(qǐng)求中沒(méi)有取到"mess"屬性對(duì)應(yīng)的屬性值,使用備選方案}Stringmess=request.getAttribute("mess");mess.length();問(wèn)題15/41轉(zhuǎn)發(fā)RequestDispatcher對(duì)象forward()方法重定向?qū)⒂脩?hù)請(qǐng)求重新定位到一個(gè)新的URL轉(zhuǎn)發(fā)與重定向response.sendRedirect("url")1、request.getRequestDispatcher("url").forward(request,response)2、<jsp:forwardpage="url"/>語(yǔ)法語(yǔ)法演示示例3:轉(zhuǎn)發(fā)與重定向16/41轉(zhuǎn)發(fā)與重定向的區(qū)別-1轉(zhuǎn)發(fā)的工作方式請(qǐng)求JSP處理中…請(qǐng)求、響應(yīng)客戶(hù)端服務(wù)器響應(yīng)結(jié)果處理結(jié)束URL沒(méi)有發(fā)生變化17/41轉(zhuǎn)發(fā)與重定向的區(qū)別-2重定向的工作方式請(qǐng)求JSP新地址客戶(hù)端服務(wù)器結(jié)果第二次請(qǐng)求所對(duì)應(yīng)的URL地址響應(yīng)再次請(qǐng)求響應(yīng)18/41轉(zhuǎn)發(fā)與重定向的區(qū)別轉(zhuǎn)發(fā)與重定向的區(qū)別-3比較項(xiàng)轉(zhuǎn)發(fā)重定向URL變化否是重新發(fā)出請(qǐng)求不會(huì)會(huì)是否攜帶請(qǐng)求是否目標(biāo)URL要求僅本W(wǎng)eb應(yīng)用任意URL重定向是客戶(hù)端行為,轉(zhuǎn)發(fā)是服務(wù)器行為注意19/41課堂練習(xí)需求說(shuō)明繼續(xù)完善上次上機(jī)練習(xí),在JSP中防止中文亂碼假定用戶(hù)名:系統(tǒng)管理員,密碼:123可以登錄成功,其他用戶(hù)拒絕登錄,正確實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)和提示分析在JSP中設(shè)置編碼方式判斷用戶(hù)是否可以登錄并實(shí)現(xiàn)跳轉(zhuǎn)共性問(wèn)題集中講解完成時(shí)間:10分鐘20/41小結(jié)實(shí)現(xiàn)新聞系統(tǒng)的用戶(hù)注冊(cè)請(qǐng)求對(duì)象request響應(yīng)對(duì)象response解決中文亂碼轉(zhuǎn)發(fā)和重定向區(qū)別21/41概述任務(wù)在新聞系統(tǒng)中保存用戶(hù)狀態(tài)登錄時(shí)自動(dòng)填寫(xiě)用戶(hù)名統(tǒng)計(jì)頁(yè)面訪(fǎng)問(wèn)次數(shù)內(nèi)容重難點(diǎn)session理解cookie理解application22/41使用session保存用戶(hù)名-1使用會(huì)話(huà)對(duì)象session實(shí)現(xiàn)一個(gè)會(huì)話(huà)就是瀏覽器與服務(wù)器之間的一次通話(huà)會(huì)話(huà)可以在多次請(qǐng)求中保存和使用數(shù)據(jù)注冊(cè)成功后自動(dòng)登錄,登錄后記住用戶(hù)狀態(tài),并在多個(gè)頁(yè)面顯示用戶(hù)名,如何實(shí)現(xiàn)?通話(huà)提問(wèn)23/41使用session保存用戶(hù)名-2sessionpublicvoidsetAttribute(Stringname,Objectvalue);用法:session.setAttribute("userName","張三豐");publicObjectgetAttribute(Stringname);用法:StringuserName=(String)session.getAttribute("userName");演示示例4
:使用session保存用戶(hù)名語(yǔ)法24/41session的工作方式每個(gè)session都有一個(gè)唯一的sessionidpublicStringgetId();session.getId();服務(wù)器瀏覽器瀏覽器請(qǐng)求請(qǐng)求響應(yīng)(攜帶sessionid)請(qǐng)求(攜帶sessionid)sessionidFCA000…sessionid28F73…25/41會(huì)話(huà)的清除和過(guò)期-1若沒(méi)有清理機(jī)制,會(huì)導(dǎo)致性能問(wèn)題或服務(wù)器崩潰程序主動(dòng)清除session數(shù)據(jù)服務(wù)器主動(dòng)清除長(zhǎng)時(shí)間沒(méi)有再次發(fā)出請(qǐng)求的sessionsession的數(shù)據(jù)是在服務(wù)器端的,服務(wù)器保存的會(huì)話(huà)數(shù)據(jù)量會(huì)越來(lái)越大,從而導(dǎo)致性能問(wèn)題問(wèn)題26/41會(huì)話(huà)的清除和過(guò)期-2程序主動(dòng)清除session數(shù)據(jù)設(shè)置會(huì)話(huà)失效:session.invalidate();移除會(huì)話(huà)的一個(gè)屬性publicvoidremoveAttribute(Stringname);用法:session.removeAttribute("userName");語(yǔ)法27/41會(huì)話(huà)的清除和過(guò)期-3服務(wù)器主動(dòng)清除長(zhǎng)時(shí)間沒(méi)有再次發(fā)出請(qǐng)求的session設(shè)置會(huì)話(huà)過(guò)期時(shí)間方法一:方法二:publicvoidsetMaxInactiveInterval(intinterval);
<session-config><session-timeout>30</session-timeout></session-config>單位:秒單位:分鐘演示示例5
:session清除與過(guò)期28/41小結(jié)用瀏覽器訪(fǎng)問(wèn)服務(wù)器——產(chǎn)生會(huì)話(huà)通過(guò)瀏覽器在網(wǎng)站登錄——在會(huì)話(huà)中保存數(shù)據(jù)登錄成功后用個(gè)人身份進(jìn)行訪(fǎng)問(wèn)——會(huì)話(huà)有效期內(nèi)關(guān)閉了瀏覽器——結(jié)束會(huì)話(huà)服務(wù)器主動(dòng)結(jié)束會(huì)話(huà)——會(huì)話(huà)到期使會(huì)話(huà)失效、刪除屬性——及時(shí)釋放會(huì)話(huà)資源程序主動(dòng)結(jié)束會(huì)話(huà)、會(huì)話(huà)到期——會(huì)話(huà)中的數(shù)據(jù)丟失29/41需求說(shuō)明繼續(xù)完善上次上機(jī)練習(xí),實(shí)現(xiàn)登錄成功后,在session中保存用戶(hù)信息并跳轉(zhuǎn)至index.jsp頁(yè)面中,在該頁(yè)面中顯示用戶(hù)名(注:需進(jìn)行session是否為空的判斷)index.jsp頁(yè)面中提供注銷(xiāo)按鈕,點(diǎn)擊注銷(xiāo)按鈕之后頁(yè)面跳轉(zhuǎn)至userLogin.jsp登錄頁(yè)面分析登錄頁(yè)提交表單到對(duì)應(yīng)的JSP頁(yè)面登錄成功時(shí)在session中保存用戶(hù)信息在其他頁(yè)面中從session中取出用戶(hù)信息顯示清空session,實(shí)現(xiàn)注銷(xiāo)課堂練習(xí)共性問(wèn)題集中講解完成時(shí)間:10分鐘30/41使用cookie自動(dòng)填寫(xiě)用戶(hù)名cookie以文件方式保存數(shù)據(jù)添加數(shù)據(jù)publicvoidaddCookie(Cookiecookie)獲取數(shù)據(jù)publicCookie[]getCookies()設(shè)置有效期publicvoidsetMaxAge(intexpiry)用戶(hù)可以禁用cookie1、瀏覽器關(guān)閉,會(huì)話(huà)結(jié)束,但為什么有些論壇在用戶(hù)再次進(jìn)入的時(shí)候卻可以識(shí)別用戶(hù)身份,并且用戶(hù)狀態(tài)為:已登錄?2、用戶(hù)每次訪(fǎng)問(wèn)郵箱的時(shí)候,頁(yè)面上會(huì)自動(dòng)顯示該用戶(hù)名?問(wèn)題演示示例6
:使用cookie自動(dòng)填寫(xiě)用戶(hù)名31/41課堂練習(xí)需求說(shuō)明繼續(xù)完善上次上機(jī)練習(xí),在cookie中保存用戶(hù)名,關(guān)閉瀏覽器再次打開(kāi)index.jsp頁(yè)面時(shí),自動(dòng)填寫(xiě)用戶(hù)名分析登錄成功時(shí),在cookie中保存用戶(hù)名在登錄頁(yè)獲取cookie中保存的用戶(hù)名完成自動(dòng)填寫(xiě)用戶(hù)名功能共性問(wèn)題集中講解完成時(shí)間:5分鐘32/41application實(shí)現(xiàn)計(jì)數(shù)器分析每個(gè)用戶(hù)都需要使用訪(fǎng)問(wèn)次數(shù)application可在整個(gè)項(xiàng)目中共享使用數(shù)據(jù)使用application實(shí)現(xiàn)計(jì)數(shù)器每次訪(fǎng)問(wèn)該頁(yè)面,計(jì)數(shù)器加1解決方法publicvoidsetAttribute(Stringname,Objectobject)publicObjectgetAttribute(Stringname)統(tǒng)計(jì)頁(yè)面的訪(fǎng)問(wèn)次數(shù)?問(wèn)題演示示例7
:使用application實(shí)現(xiàn)計(jì)數(shù)器33/41課堂練習(xí)需求說(shuō)明繼續(xù)完善上次上機(jī)練習(xí),實(shí)現(xiàn)統(tǒng)計(jì)userLogin.jsp登錄頁(yè)面被訪(fǎng)問(wèn)的次數(shù)分析訪(fǎng)問(wèn)登錄頁(yè)的時(shí)候?qū)㈨?yè)面訪(fǎng)問(wèn)次
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腦網(wǎng)絡(luò)分析在精神疾病中的應(yīng)用-洞察及研究
- 2025長(zhǎng)沙工程機(jī)械行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025長(zhǎng)三角新材料產(chǎn)業(yè)集聚區(qū)行業(yè)市場(chǎng)供需研究及投資周期規(guī)劃分析報(bào)告
- 港口技術(shù)創(chuàng)新對(duì)可持續(xù)發(fā)展的影響研究-洞察及研究
- 2025郵政行業(yè)市場(chǎng)競(jìng)爭(zhēng)態(tài)勢(shì)深度解析及服務(wù)創(chuàng)新與發(fā)展方向規(guī)劃綜合報(bào)告
- 2025郵政無(wú)人機(jī)配送行業(yè)市場(chǎng)供需分析與發(fā)展趨勢(shì)投資評(píng)估規(guī)劃分析研究報(bào)告
- 熱帶作物栽培工崗前工藝分析考核試卷含答案
- 磚瓦燒火工安全防護(hù)水平考核試卷含答案
- 2025造紙行業(yè)市場(chǎng)發(fā)展趨勢(shì)研究及資源回收與生產(chǎn)工藝改進(jìn)報(bào)告
- 2026天津醫(yī)科大學(xué)眼科醫(yī)院第二批招聘1人筆試考試備考題庫(kù)及答案解析
- 高層建筑火災(zāi)風(fēng)險(xiǎn)評(píng)估與管理策略研究
- 綜合管線(xiàn)探挖安全專(zhuān)項(xiàng)施工方案
- GB/T 37507-2025項(xiàng)目、項(xiàng)目群和項(xiàng)目組合管理項(xiàng)目管理指南
- 華為管理手冊(cè)-新員工培訓(xùn)
- 社保補(bǔ)繳差額協(xié)議書(shū)
- 2025成人有創(chuàng)機(jī)械通氣氣道內(nèi)吸引技術(shù)操作
- 2025年江蘇省職業(yè)院校技能大賽高職組(人力資源服務(wù))參考試題庫(kù)資料及答案
- 東北農(nóng)業(yè)大學(xué)教案課程肉品科學(xué)與技術(shù)
- 成都市金牛區(qū)2025屆初三一診(同期末考試)語(yǔ)文試卷
- 如何應(yīng)對(duì)網(wǎng)絡(luò)暴力和欺凌行為
- 現(xiàn)代技術(shù)服務(wù)費(fèi)合同1
評(píng)論
0/150
提交評(píng)論