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

下載本文檔

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

文檔簡介

JSP實(shí)現(xiàn)數(shù)據(jù)傳遞和保存

線上線下平臺預(yù)習(xí)2/41本課目標(biāo)學(xué)完本次課程后,你能夠:掌握request和response的使用解決頁面中出現(xiàn)的中文亂碼掌握轉(zhuǎn)發(fā)和重定向的區(qū)別掌握session存取數(shù)據(jù)理解cookie理解application3/41概述任務(wù)實(shí)現(xiàn)新聞系統(tǒng)的用戶注冊內(nèi)容requestresponse4/41獲取表單提交的數(shù)據(jù)-1我們在網(wǎng)頁的表單中填入數(shù)據(jù),提交表單后,數(shù)據(jù)被提交到哪里去了?JSP問題5/41獲取表單提交的數(shù)據(jù)-2請求對象: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中是否長度限制有無安全性低高URL可傳播是否7/41獲取同名的多個參數(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訪問提交的數(shù)據(jù)}else{ //未提交與參數(shù)mailId相關(guān)的數(shù)據(jù)}8/41request對象常用方法方法名稱說明StringgetParameter(Stringname)根據(jù)表單組件名稱獲取提交數(shù)據(jù)String[]getParameterValues(Stringname)獲取表單組件對應(yīng)多個值時(shí)的請求數(shù)據(jù)voidsetCharacterEncoding(Stringcharset)指定每個請求的編碼RequestDispatchergetRequestDispatcher(Stringpath)返回一個RequestDispatcher對象,該對象的forward()方法用于轉(zhuǎn)發(fā)請求9/41內(nèi)置對象JSP已經(jīng)準(zhǔn)備好的,可以直接使用的對象請求對象:request輸出對象:out響應(yīng)對象:response應(yīng)用程序?qū)ο螅篴pplication會話對象:session頁面上下文對象:pageContext頁面對象:page配置對象:config異常對象:exception10/41需求說明編寫登錄頁面(userLogin.jsp),表單包含字段:用戶名和密碼提交表單到loginSuccess.jsp頁面,并在該頁面中顯示提交的用戶名和密碼分析在loginSuccess.jsp中使用request取出表單提交的數(shù)據(jù)在頁面中顯示課堂練習(xí)完成時(shí)間:5分鐘共性問題集中講解11/41JSP中默認(rèn)使用的字符編碼方式:iso-8859-1,不支持中文常見的支持中文的編碼方式中文亂碼你提交的是中文用戶名嗎?編碼方式收錄的字符gb2312常用簡體漢字gbk簡體和繁體漢字utf-8所有國家需要的字符問題12/41解決中文亂碼設(shè)置請求和響應(yīng)的編碼方式request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");<%@

pagelanguage="java"contentType="text/html;charset=utf-8"%>get請求出現(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在請求中存取屬性-1在請求中保存屬性publicvoidsetAttribute(Stringname,Objecto)request.setAttribute("mess","注冊失敗");在請求中獲取屬性publicObjectgetAttribute(Stringname)屬性名屬性值引用類型屬性名屬性值1、在使用屬性值的時(shí)候要做非空判斷,否則會出現(xiàn)空指針異常2、它的返回值類型是Object類型,需要做數(shù)據(jù)類型的轉(zhuǎn)換注意14/41在請求中存取屬性-2你會這樣寫嗎?Stringmess=(String)request.getAttribute("mess");if(mess!=null){//在請求中取到"mess"屬性對應(yīng)的屬性值,正常使用mess數(shù)據(jù)}else{//在請求中沒有取到"mess"屬性對應(yīng)的屬性值,使用備選方案}Stringmess=request.getAttribute("mess");mess.length();問題15/41轉(zhuǎn)發(fā)RequestDispatcher對象forward()方法重定向?qū)⒂脩粽埱笾匦露ㄎ坏揭粋€新的URL轉(zhuǎn)發(fā)與重定向response.sendRedirect("url")1、request.getRequestDispatcher("url").forward(request,response)2、<jsp:forwardpage="url"/>語法語法演示示例3:轉(zhuǎn)發(fā)與重定向16/41轉(zhuǎn)發(fā)與重定向的區(qū)別-1轉(zhuǎn)發(fā)的工作方式請求JSP處理中…請求、響應(yīng)客戶端服務(wù)器響應(yīng)結(jié)果處理結(jié)束URL沒有發(fā)生變化17/41轉(zhuǎn)發(fā)與重定向的區(qū)別-2重定向的工作方式請求JSP新地址客戶端服務(wù)器結(jié)果第二次請求所對應(yīng)的URL地址響應(yīng)再次請求響應(yīng)18/41轉(zhuǎn)發(fā)與重定向的區(qū)別轉(zhuǎn)發(fā)與重定向的區(qū)別-3比較項(xiàng)轉(zhuǎn)發(fā)重定向URL變化否是重新發(fā)出請求不會會是否攜帶請求是否目標(biāo)URL要求僅本W(wǎng)eb應(yīng)用任意URL重定向是客戶端行為,轉(zhuǎn)發(fā)是服務(wù)器行為注意19/41課堂練習(xí)需求說明繼續(xù)完善上次上機(jī)練習(xí),在JSP中防止中文亂碼假定用戶名:系統(tǒng)管理員,密碼:123可以登錄成功,其他用戶拒絕登錄,正確實(shí)現(xiàn)頁面的跳轉(zhuǎn)和提示分析在JSP中設(shè)置編碼方式判斷用戶是否可以登錄并實(shí)現(xiàn)跳轉(zhuǎn)共性問題集中講解完成時(shí)間:10分鐘20/41小結(jié)實(shí)現(xiàn)新聞系統(tǒng)的用戶注冊請求對象request響應(yīng)對象response解決中文亂碼轉(zhuǎn)發(fā)和重定向區(qū)別21/41概述任務(wù)在新聞系統(tǒng)中保存用戶狀態(tài)登錄時(shí)自動填寫用戶名統(tǒng)計(jì)頁面訪問次數(shù)內(nèi)容重難點(diǎn)session理解cookie理解application22/41使用session保存用戶名-1使用會話對象session實(shí)現(xiàn)一個會話就是瀏覽器與服務(wù)器之間的一次通話會話可以在多次請求中保存和使用數(shù)據(jù)注冊成功后自動登錄,登錄后記住用戶狀態(tài),并在多個頁面顯示用戶名,如何實(shí)現(xiàn)?通話提問23/41使用session保存用戶名-2sessionpublicvoidsetAttribute(Stringname,Objectvalue);用法:session.setAttribute("userName","張三豐");publicObjectgetAttribute(Stringname);用法:StringuserName=(String)session.getAttribute("userName");演示示例4

:使用session保存用戶名語法24/41session的工作方式每個session都有一個唯一的sessionidpublicStringgetId();session.getId();服務(wù)器瀏覽器瀏覽器請求請求響應(yīng)(攜帶sessionid)請求(攜帶sessionid)sessionidFCA000…sessionid28F73…25/41會話的清除和過期-1若沒有清理機(jī)制,會導(dǎo)致性能問題或服務(wù)器崩潰程序主動清除session數(shù)據(jù)服務(wù)器主動清除長時(shí)間沒有再次發(fā)出請求的sessionsession的數(shù)據(jù)是在服務(wù)器端的,服務(wù)器保存的會話數(shù)據(jù)量會越來越大,從而導(dǎo)致性能問題問題26/41會話的清除和過期-2程序主動清除session數(shù)據(jù)設(shè)置會話失效:session.invalidate();移除會話的一個屬性publicvoidremoveAttribute(Stringname);用法:session.removeAttribute("userName");語法27/41會話的清除和過期-3服務(wù)器主動清除長時(shí)間沒有再次發(fā)出請求的session設(shè)置會話過期時(shí)間方法一:方法二:publicvoidsetMaxInactiveInterval(intinterval);

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

:session清除與過期28/41小結(jié)用瀏覽器訪問服務(wù)器——產(chǎn)生會話通過瀏覽器在網(wǎng)站登錄——在會話中保存數(shù)據(jù)登錄成功后用個人身份進(jìn)行訪問——會話有效期內(nèi)關(guān)閉了瀏覽器——結(jié)束會話服務(wù)器主動結(jié)束會話——會話到期使會話失效、刪除屬性——及時(shí)釋放會話資源程序主動結(jié)束會話、會話到期——會話中的數(shù)據(jù)丟失29/41需求說明繼續(xù)完善上次上機(jī)練習(xí),實(shí)現(xiàn)登錄成功后,在session中保存用戶信息并跳轉(zhuǎn)至index.jsp頁面中,在該頁面中顯示用戶名(注:需進(jìn)行session是否為空的判斷)index.jsp頁面中提供注銷按鈕,點(diǎn)擊注銷按鈕之后頁面跳轉(zhuǎn)至userLogin.jsp登錄頁面分析登錄頁提交表單到對應(yīng)的JSP頁面登錄成功時(shí)在session中保存用戶信息在其他頁面中從session中取出用戶信息顯示清空session,實(shí)現(xiàn)注銷課堂練習(xí)共性問題集中講解完成時(shí)間:10分鐘30/41使用cookie自動填寫用戶名cookie以文件方式保存數(shù)據(jù)添加數(shù)據(jù)publicvoidaddCookie(Cookiecookie)獲取數(shù)據(jù)publicCookie[]getCookies()設(shè)置有效期publicvoidsetMaxAge(intexpiry)用戶可以禁用cookie1、瀏覽器關(guān)閉,會話結(jié)束,但為什么有些論壇在用戶再次進(jìn)入的時(shí)候卻可以識別用戶身份,并且用戶狀態(tài)為:已登錄?2、用戶每次訪問郵箱的時(shí)候,頁面上會自動顯示該用戶名?問題演示示例6

:使用cookie自動填寫用戶名31/41課堂練習(xí)需求說明繼續(xù)完善上次上機(jī)練習(xí),在cookie中保存用戶名,關(guān)閉瀏覽器再次打開index.jsp頁面時(shí),自動填寫用戶名分析登錄成功時(shí),在cookie中保存用戶名在登錄頁獲取cookie中保存的用戶名完成自動填寫用戶名功能共性問題集中講解完成時(shí)間:5分鐘32/41application實(shí)現(xiàn)計(jì)數(shù)器分析每個用戶都需要使用訪問次數(shù)application可在整個項(xiàng)目中共享使用數(shù)據(jù)使用application實(shí)現(xiàn)計(jì)數(shù)器每次訪問該頁面,計(jì)數(shù)器加1解決方法publicvoidsetAttribute(Stringname,Objectobject)publicObjectgetAttribute(Stringname)統(tǒng)計(jì)頁面的訪問次數(shù)?問題演示示例7

:使用application實(shí)現(xiàn)計(jì)數(shù)器33/41課堂練習(xí)需求說明繼續(xù)完善上次上機(jī)練習(xí),實(shí)現(xiàn)統(tǒng)計(jì)userLogin.jsp登錄頁面被訪問的次數(shù)分析訪問登錄頁的時(shí)候?qū)㈨撁嬖L問次

溫馨提示

  • 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

提交評論