




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
HttpServletRequest與
HttpServletResponse1精選2021版課件本篇內容HttpServletRequest對象介紹HttpServletResponse對象介紹2精選2021版課件一、HttpServletRequest對象介紹HttpServletRequest對象簡介讀取請求行和請求消息頭讀取請求參數3精選2021版課件1.1HttpServletRequest對象簡介客戶端對于Servlet的每次訪問請求,Servlet容器(如Tomcat)都會創建一個封裝HTTP請求的對象和一個代表HTTP響應的對象,當調用Servlet的doGet或doPost方法時,這兩個對象會作為參數被傳遞進去4精選2021版課件GET/ServletDemo/FirstServletHTTP/1.1Accept-Language:zh-cnUser-Agent:Mozilla/4.0(MSIE7.0;)Host:localhost:8080…發送HTTP請求requestTomcat創建出一個HttpServletRequest對象封裝進HTTP請求消息被封裝進http://localhost:8080/ServletDemo/servlet/FirstServlet訪問服務器端Servlet5精選2021版課件HttpServletRequest對象代表客戶端的請求,當客戶端通過HTTP協議訪問服務器時,所發出的HTTP請求消息被封裝在此對象之中,通過這個對象提供的方法,即可獲得客戶端發出的請求信息。6精選2021版課件HTTPGET請求示例GET/myApp/1.html?name=tom&age=21HTTP/1.1Accept:*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(MSIE6.0;)Host:localhost:8080Connection:Keep-Alive“空行”7精選2021版課件POST/myApp/1.htmlHTTP/1.1Accept:*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(MSIE6.0;)Host:localhost:8080Connection:Keep-Alivename=tom&age=21HTTPPOST請求示例8精選2021版課件1.2讀取請求行和請求消息頭獲取(部分)請求行和請求頭信息示例Tomcat自帶示例9精選2021版課件1.3讀取請求參數HttpServletRequest對象最基本的應用是獲取瀏覽器傳遞給Web服務器的請求參數信息!重要10精選2021版課件1.3.1GET和POST方式下的請求參數請求參數:GET方式下,URL地址后的附加信息POST方式下,HTTP請求消息中的實體內容部分11精選2021版課件GET方式傳遞參數GET方式傳遞參數的形式瀏覽器在URL地址后以“?”形式帶上數據,多個數據之間以&分隔http://localhost:8080/MyApp/myServlet?name1=value1&name2=value2名稱為name2的請求參數請求參數的值12精選2021版課件POST方式傳遞參數POST方式:<form>表單method屬性設置為“post”,提交表單時生成的HTTP請求方式POST方式傳遞參數的形式作為請求消息的實體內容部分進行傳送13精選2021版課件1.3.2讀取請求參數的方法通過HttpServletRequest對象的以下方法讀取GET/POST方式下傳遞的參數getParametergetParameterValues14精選2021版課件I.單值讀取—getParameter方法getParameter方法用于返回某個指定名稱的請求參數的值方法原型:方法說明方法參數:指定名稱的請求參數,字符串類型返回值:請求參數的值,字符串類型publicStringgetParameter(Stringname);15精選2021版課件getParameter示例userInfo.html頁面提交給一個ServletServlet讀取用戶名和年齡并顯示16精選2021版課件<formaction=“指向Servlet的URL”>
用戶名:<inputtype=“text”name=“userName”/><br/>
年齡:<inputtype=“text”name=“age”/><br/><inputtype=“submit”/></form>服務器端Servlet程序通過request對象getParameter方法獲取請求參數值request.getParameter(“userName”);request.getParameter(“age”);返回類型
String指定名稱請求參數17精選2021版課件表單action提交至Servlet<servle-mapping>
<servlet-name>Servlet1</servlet-name><url-pattern>/servlet/Servlet1</url-pattern></serlvet-mapping>假定web.xml配置Servlet訪問路徑如此:<formaction=“”
>
用戶名:<inputtype=“text”name=“userName”/><br/> …….<inputtype=“submit”/></form>/servlet/Servlet1/當前應用18精選2021版課件<servle-mapping>
<servlet-name>Servlet1</servlet-name><url-pattern>/servlet/Servlet1</url-pattern></serlvet-mapping><formaction=“”
>
用戶名:<inputtype=“text”name=“userName”/><br/> …….<inputtype=“submit”/></form>/servlet/Servlet1/當前應用action值的第一個正斜杠”/”:代表當前站點根目錄配置文件第一個正斜杠”/”:代表當前應用根目錄19精選2021版課件getParameter示例示例20精選2021版課件getParameter方法說明getParameter方法說明:參數名區分大小寫指定名稱參數存在但沒有設置值,返回空串指定名稱不存在,返回null存在多個指定名稱的參數,返回第一個getParameter方法通常用于獲取在HTTP請求消息中僅出現一次的參數,即單個值的讀取示例21精選2021版課件post方式提交,參數作為HTTP請求消息的實體內容部分進行傳送,服務器端獲取參數值的方法一樣實際做法:在doGet或doPost方法體內直接調用另一個方法即可示例22精選2021版課件II.多值讀取—getParameterValuesgetParameterValues方法用于返回某個指定名稱的所有參數的值方法原型:方法說明方法參數:指定名稱的請求參數,字符串類型返回值:字符串數組類型publicString[]getParameterValues(Stringname);23精選2021版課件getParameterValues示例Servlet讀取選擇的所用愛好并顯示示例24精選2021版課件getParameterValues方法說明參數名區分大小寫對于單值參數,返回的數組長度為1良好編程習慣:在使用對象或數組之前,判斷是否為null示例getParameterValues方法說明25精選2021版課件獲取客戶端請求參數綜合示例
示例提交給一個Servlet,讀取全部請求參數并顯示26精選2021版課件1.3.3正確書寫地址提交到Servlet!理解27精選2021版課件表單action屬性說明action屬性值指定提交表單時,輸入數據提交至的服務器端程序的地址,可以用相對路徑或絕對路徑絕對路徑形式:http://localhost:8080/RequestDemo/servlet/Servlet1相對路徑形式:以“/”開頭不以“/”開頭28精選2021版課件相對路徑訪問I以“/”開頭表單action屬性值以“/”開頭此處的“/”代表站點根目錄,非Web應用根目錄訪問Servlet寫法:配置文件中Servlet的訪問地址前加“/當前應用”http://localhost:8080/29精選2021版課件相對路徑訪問II不以“/”開頭:相對于當前URL30精選2021版課件<formaction=“”
method=“get”>
用戶名:<inputtype=“text”name=“userName”/><br/> …….<inputtype=“submit”/></form>http://localhost:8080/RequestDemo/userInfo.html<servle-mapping> <servlet-name>RequestParameterServlet</servlet-name><url-pattern>/servlet/Servlet1</url-pattern></serlvet-mapping>servlet/Servlet1表單所在頁面URL31精選2021版課件地址寫法配置文件,web.xml配置Servlet訪問路徑,以“/”開頭,此處代表當前應用根目錄頁面文件,相對地址若以“/”開頭,此處代表當前站點根目錄表單action值頁面中的超鏈接32精選2021版課件HttpServletRequest對象小結重點掌握讀取請求參數方法getParametergetParameterValues理解和掌握正確提交至Servlet的寫法頁面中寫法:WEB.XML配置文件中的Servlet訪問路徑前+“/當前應用”33精選2021版課件二、HttpServletResponse對象HttpServletResponse對象簡介輸出響應正文其它常用方法34精選2021版課件2.1HttpServletResponse對象簡介客戶端對于Servlet的每次訪問請求,Servlet容器都會創建一個用于封裝HTTP請求的對象和一個代表HTTP響應消息的對象,當調用Servlet的doGet或doPost方法時,這兩個對象會作為參數被傳遞進去35精選2021版課件調用過程Tomcat容器GET/ServletDemo/FirstServletHTTP/1.1Accept-Language:zh-cnUser-Agent:Mozilla/4.0(MSIE7.0;)Host:localhost:8080…發送HTTP請求request被封裝進responseTomcat同時創建出一個HttpServletResponse類型對象代表HTTP響應36精選2021版課件HttpServletResponse對象代表服務器端對客戶端的響應,用于封裝HTTP響應消息37精選2021版課件HTTP響應示例HTTP/1.1200OKServer:Apache-Coyote/1.1Last-Modified:Fri,23Dec201108:40:06GMTContent-Type:text/html;charset=utf-8Content-Length:339Date:Fri,23Dec201108:40:24GMT<HTML><HEAD>…..
一個響應行
若干響應消息頭“空行”實體內容代表供瀏覽器顯示所用的數據,即“查看源文件”看到的內容38精選2021版課件2.2輸出響應正文(實體內容)輸出響應正文的方法getWriter返回一個(文本)字符輸出流對象專用于輸出內容為文本字符的網頁文檔getOutPutStream返回一個字節輸出流對象如果要輸出二進制格式的響應正文,應該使用該方法39精選2021版課件getWriter方法getWriter返回一個PrintWriter類型的字符輸出流對象,專用于輸出內容為文本字符的網頁文檔以下方法都可以創建輸出out.print();out.println();out.write();out.writeln();PrintWriterout=response.getWriter();40精選2021版課件getWriter方法說明響應正文不是直接發送到客戶端,而是首先寫入Servlet容器提供的一個輸出緩沖區,然后由Servlet容器返回給Web服務器程序,再經由Web服務器程序發送給客戶端PrintWriter對象的flush方法用來清理緩沖,close方法用來關閉輸出流對象,釋放資源程序中也可以不顯式調用,由Servlet容器自動關閉,并清理緩沖out.flush();out.close();41精選2021版課件方法示例publicclassServlet1extendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse){
response.setContentType("text/html");
PrintWriterout=response.getWriter(); StringuserName=request.getParameter("userName");//通過PrintWriter類型對象out的println方法,輸出內容至瀏覽器
out.println("username:"+userName+"<br/>"); //顯式清理緩存和關閉 out.flush(); out.close();
}42精選2021版課件2.3HttpServletResponse其它常用方法字符集編碼問題重定向43精選2021版課件2.3.1其他方法——字符集編碼問題HttpServletResponse的setContentType方法設置響應消息頭“Content-Type”設置Servlet輸出內容的MIME類型,網頁文檔的類型通常為“text/html”在類型后面還可以指定響應內容的字符集編碼類型,如果不指定,采用默認ISO8859-1字符集編碼response.setContentType(“text/html;charset=utf-8");response.setContentType(“text/html");44精選2021版課件字符集問題——Servlet輸出中文Servlet輸出內容中包含中文,需要顯式指定字符集為以下幾種編碼之一:utf-8gbkgb2312所有標準的瀏覽器和客戶機都支持utf-8編碼,網頁文檔最好采用utf-8編碼不指定中文編碼和指定中文編碼示例45精選2021版課件顯式指定字符集編碼的作用:服務器端采用指定的字符集編碼對內容進行編碼轉換后,發送給客戶端瀏覽器通知瀏覽器采用該指定的字符集編碼對接收到的內容進行解碼顯示response.setContentType(“text/html;charset=utf-8");顯式設置字符集編碼46精選2021版課件response.setContentType(“text/html;charset=iso8859-1");PrintWriterout=response.getWriter();out.println(“中");中服務器端ISO編碼表127127客戶端瀏覽器ISO編碼表?無法正確轉換顯示輸出中文亂碼不包含中文編碼轉換成一個無效碼ISO編碼中,127對應的是其他符號,比如“?”47精選2021版課件response.setContentType(“text/html;charset=utf-8");PrintWriterout=response.getWriter();out.println(“中");中服務器端Utf-8編碼表9797客戶端瀏覽器Utf-8編碼表中正確轉換正確顯示Servlet正確輸出中文48精選2021版課件HTML網頁文檔中文問題HTML中定義了<meta>標簽的http-equiv屬性,可以模擬HTTP響應消息頭<meta>標簽的一個常用應用用來設置當前頁面的字符集編碼MyEclipse開發HTMLWindows-preference-FilesandEditors-HTML修改字符集編碼為utf-8<metahttp-equiv=“Content-Type”content=“text/html;charset=utf-8”>49精選2021版課件request讀取中文請求參數亂碼讀取中文請求參數亂碼示例解決:請求頁面字符集編碼首先保證是utf-8Servlet程序獲取參數前增加以下代碼以上針對POST提交下的中文請求參數有效GET提交下中文請求參數亂碼另有解決方法request.setCharacterEncoding("utf-8");50精選2021版課件字符集編碼結論I原則:各處采用的(包含中文的)字符集編碼一致網頁文檔(HTML,JSP)統一采用utf-8字符集編碼HTML:Servlet程序開始處統一加以下幾句:GET方式下中文請求參數亂碼解決:修改server.xml<metahttp-equiv=“Content-Type”content=“text/html;charset=utf-8”>
response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");51精選2021版課件2.3.2其他方法——重定向HttpServletResponse的sendRedirect方法實現請求重定向location參數指定了重定向的URL,可以采用相對或絕對路徑瀏覽器地址欄發生變化,顯示為location所指向的URLpublicvoidsendRedirect(Stringlocation);52精選2021版課件示例:登錄成功后,轉向首頁示例提交給Servlet判斷處理53精選2021版課件Stringusername=request.getParameter("userName");Stringpwd=request.getParameter("pwd");if(username.equals("tom")&&pwd.equals("123")){
response.sendRedirect("/ResponseDemo/index.html");}else{
response.sendRedirect("/ResponseDemo/error.html");}54精選2021版課件location參數采用相對路徑寫法的說明若以“/”開頭,此“/”代表站點(非Web應用)根目錄如果不以“/”開頭,代表相對于當前請求路徑的URLpublicvoidsendRedirect(Stringlocation);55精選2021版課件HttpServletResponse對象小結掌握輸出內容為文本字符的網頁文檔的方法掌握sendRedirect方法實現請求重定向中文亂碼問題知道解決方法PrintWriterout=response.getWriter();out.println(“");56精選2021版課件附:讀取請求參數中文亂碼問題自學57精選2021版課件request讀取中文請求參數瀏覽器傳遞請求參數時,會對中文字符進行編碼,瀏覽器采用哪一種字符集編碼,則Servlet對象的getParameter等方法必須以那一種字符集編碼進行解碼,才能得到正確的中文參數信息POST提交方式下,瀏覽器采用當前頁面字符集對傳遞的中文參數進行編碼HttpServletRequest對象的getParameter方法讀取參數時,默認采用ISO8859-1字符集編碼58精選2021版課件<html><head><metahttp-equiv="Content-Type"content="text/html;charset
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《江寧建筑勞務合同》
- 2025自然人借款合同模板
- 2025家庭電路改造合同協議書
- 2025年建筑用木料及加工木材組件項目合作計劃書
- 2025物業管理簡易勞動合同說明及范本
- 2025廣告策劃委托合同樣本格式
- 2025附條件購買合同范本
- 2025年鉻系鐵合金項目合作計劃書
- 2025年防洪設施管理服務項目建議書
- 2025辦公家具買賣合同范本
- 2024年5月廣東省公務員考試公安聯考結構化面試真題試題試卷答案解析
- 2025-2030中國醫療領域的射頻識別設備(RFID)行業市場發展趨勢與前景展望戰略研究報告
- 2025至2030中國車載OLED屏市場未來前景展望及運行態勢剖析報告
- 2024-2025學年八年級下學期道德與法治期中模擬試卷(二)(統編版含答案解析)
- 2025-2030中國生物醫藥行業市場深度調研及發展趨勢與投資前景預測研究報告
- 貿易公司員工管理制度
- 專利代理師高頻題庫新版2025
- 肝硬化護理新進展
- 武安市公安局招聘警務輔助人員筆試真題2024
- 2025年全國國家版圖知識競賽題庫及答案(中小學組)
- DB15-T 1339-2025 風電場機組布置技術規范
評論
0/150
提交評論