2.JSP實(shí)現(xiàn)數(shù)據(jù)傳遞和保存_第1頁(yè)
2.JSP實(shí)現(xiàn)數(shù)據(jù)傳遞和保存_第2頁(yè)
2.JSP實(shí)現(xiàn)數(shù)據(jù)傳遞和保存_第3頁(yè)
2.JSP實(shí)現(xiàn)數(shù)據(jù)傳遞和保存_第4頁(yè)
2.JSP實(shí)現(xiàn)數(shù)據(jù)傳遞和保存_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ù)傳遞和保存

線上線下平臺(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訪問(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ì)話對(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è)面訪問(wèn)次數(shù)內(nèi)容重難點(diǎn)session理解cookie理解application22/41使用session保存用戶(hù)名-1使用會(huì)話對(duì)象session實(shí)現(xiàn)一個(gè)會(huì)話就是瀏覽器與服務(wù)器之間的一次通話會(huì)話可以在多次請(qǐng)求中保存和使用數(shù)據(jù)注冊(cè)成功后自動(dòng)登錄,登錄后記住用戶(hù)狀態(tài),并在多個(gè)頁(yè)面顯示用戶(hù)名,如何實(shí)現(xiàn)?通話提問(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ì)話的清除和過(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ì)話數(shù)據(jù)量會(huì)越來(lái)越大,從而導(dǎo)致性能問(wèn)題問(wèn)題26/41會(huì)話的清除和過(guò)期-2程序主動(dòng)清除session數(shù)據(jù)設(shè)置會(huì)話失效:session.invalidate();移除會(huì)話的一個(gè)屬性publicvoidremoveAttribute(Stringname);用法:session.removeAttribute("userName");語(yǔ)法27/41會(huì)話的清除和過(guò)期-3服務(wù)器主動(dòng)清除長(zhǎng)時(shí)間沒(méi)有再次發(fā)出請(qǐng)求的session設(shè)置會(huì)話過(guò)期時(shí)間方法一:方法二:publicvoidsetMaxInactiveInterval(intinterval);

<session-config><session-timeout>30</session-timeout></session-config>單位:秒單位:分鐘演示示例5

:session清除與過(guò)期28/41小結(jié)用瀏覽器訪問(wèn)服務(wù)器——產(chǎn)生會(huì)話通過(guò)瀏覽器在網(wǎng)站登錄——在會(huì)話中保存數(shù)據(jù)登錄成功后用個(gè)人身份進(jìn)行訪問(wèn)——會(huì)話有效期內(nèi)關(guān)閉了瀏覽器——結(jié)束會(huì)話服務(wù)器主動(dòng)結(jié)束會(huì)話——會(huì)話到期使會(huì)話失效、刪除屬性——及時(shí)釋放會(huì)話資源程序主動(dòng)結(jié)束會(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ì)話結(jié)束,但為什么有些論壇在用戶(hù)再次進(jìn)入的時(shí)候卻可以識(shí)別用戶(hù)身份,并且用戶(hù)狀態(tài)為:已登錄?2、用戶(hù)每次訪問(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ù)都需要使用訪問(wèn)次數(shù)application可在整個(gè)項(xiàng)目中共享使用數(shù)據(jù)使用application實(shí)現(xiàn)計(jì)數(shù)器每次訪問(wèn)該頁(yè)面,計(jì)數(shù)器加1解決方法publicvoidsetAttribute(Stringname,Objectobject)publicObjectgetAttribute(Stringname)統(tǒng)計(jì)頁(yè)面的訪問(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è)面被訪問(wèn)的次數(shù)分析訪問(wèn)登錄頁(yè)的時(shí)候?qū)㈨?yè)面訪問(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論