JavaWb技術(shù)開發(fā)-第03章-請求與響應(yīng)_第1頁
JavaWb技術(shù)開發(fā)-第03章-請求與響應(yīng)_第2頁
JavaWb技術(shù)開發(fā)-第03章-請求與響應(yīng)_第3頁
JavaWb技術(shù)開發(fā)-第03章-請求與響應(yīng)_第4頁
JavaWb技術(shù)開發(fā)-第03章-請求與響應(yīng)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

JavaWeb技術(shù)開發(fā)實(shí)戰(zhàn)第3章:請求與響應(yīng)請求與響應(yīng)——內(nèi)容概要HttpServletResponse對象及其應(yīng)用;HttpServletRequest對象及其應(yīng)用;RequestDispatcher對象及其應(yīng)用;請求轉(zhuǎn)發(fā)與請求重定向在項(xiàng)目開發(fā)中的應(yīng)用;請求與響應(yīng)——請求與響應(yīng)總體概述需要注意的是,在Web服務(wù)器運(yùn)行階段,每個Servlet都只會創(chuàng)建一個實(shí)例對象。然而,每次HTTP請求,Web服務(wù)器都會調(diào)用所請求Servlet實(shí)例的service(HttpServletRequestrequest,HttpServletResponseresponse)方法,重新創(chuàng)建一個request對象和一個response對象。接下來,本章將針對request對象和response對象進(jìn)行詳細(xì)地講解。請求與響應(yīng)——請求與響應(yīng)總體概述請求與響應(yīng)——HttpServletResponse對象在ServletAPI中,定義了一個HttpServletResponse接口,它繼承自ServletResponse接口,專門用來封裝HTTP響應(yīng)消息。由于HTTP響應(yīng)消息分為狀態(tài)行、響應(yīng)消息頭、消息體三部分,因此,在HttpServletResponse接口中定義了向客戶端發(fā)送響應(yīng)狀態(tài)碼、響應(yīng)消息頭、響應(yīng)消息體的方法,接下來,將針對這些方法進(jìn)行詳細(xì)的講解。當(dāng)Servlet向客戶端回送響應(yīng)消息時,需要在響應(yīng)消息中設(shè)置狀態(tài)碼。為此,在HttpServletResponse接口中,定義了兩個發(fā)送狀態(tài)碼的方法,具體如下。1.setStatus(intstatus)方法該方法用于設(shè)置HTTP響應(yīng)消息的狀態(tài)碼,并生成響應(yīng)狀態(tài)行。由于響應(yīng)狀態(tài)行中的狀態(tài)描述信息直接與狀態(tài)碼相關(guān),而HTTP版本由服務(wù)器確定,因此,只要通過setStatus(intstatus)方法設(shè)置了狀態(tài)碼,即可實(shí)現(xiàn)狀態(tài)行的發(fā)送。需要注意的是,正常情況下,Web服務(wù)器會默認(rèn)產(chǎn)生一個狀態(tài)碼為200的狀態(tài)行。請求與響應(yīng)——HttpServletResponse對象2.sendError(intsc)方法該方法用于發(fā)送表示錯誤信息的狀態(tài)碼,例如,404狀態(tài)碼表示找不到客戶端請求的資源。在response對象中,提供了兩個重載的sendError(intsc)方法,具體如下:在上面重載的兩個方法中,第一個方法只是發(fā)送錯誤信息的狀態(tài)碼,而第二個方法除了發(fā)送狀態(tài)碼外,還可以增加一條用于提示說明的文本信息,該文本信息將出現(xiàn)在發(fā)送給客戶端的正文內(nèi)容中。請求與響應(yīng)——HttpServletResponse對象當(dāng)Servlet向客戶端發(fā)送響應(yīng)消息時,由于HTTP協(xié)議的響應(yīng)頭字段有很多種,為此,在HttpServletResponse接口中,定義了一系列設(shè)置HTTP響應(yīng)頭字段的方法,如表所示。發(fā)送響應(yīng)消息頭相關(guān)方法請求與響應(yīng)——HttpServletResponse對象由于在HTTP響應(yīng)消息中,大量的數(shù)據(jù)都是通過響應(yīng)消息體傳遞的,因此,ServletResponse遵循以IO流傳遞大量數(shù)據(jù)的設(shè)計理念。在發(fā)送響應(yīng)消息體時,定義了兩個與輸出流相關(guān)的方法,具體如下。1.getOutputStream()方法該方法所獲取的字節(jié)輸出流對象為ServletOutputStream類型。由于ServletOutputStream是OutputStream的子類,它可以直接輸出字節(jié)數(shù)組中的二進(jìn)制數(shù)據(jù)。因此,要想輸出二進(jìn)制格式的響應(yīng)正文,就需要使用getOutputStream()方法。2.getWriter()方法該方法所獲取的字符輸出流對象為PrintWriter類型。由于PrintWriter類型的對象可以直接輸出字符文本內(nèi)容,因此,要想輸出內(nèi)容全為字符文本的網(wǎng)頁文檔,需要使用getWriter()方法。雖然response對象的getOutputStream()和getWriter()方法都可以發(fā)送響應(yīng)消息體,但是,它們之間互相排斥,不可同時使用,否則會發(fā)生IllegalStateException異常,如圖所示請求與響應(yīng)——HttpServletResponse對象在某些情況下,針對客戶端的請求,一個Servlet類可能無法完成全部工作。這時,可以使用請求重定向來完成。所謂請求重定向,指的是Web服務(wù)器接收到客戶端的請求后,可能由于某些條件限制,不能訪問當(dāng)前請求URL所指向的Web資源,而是指定了一個新的資源路徑,讓客戶端重新發(fā)送請求。為了實(shí)現(xiàn)請求重定向,在HttpServletResponse接口中,定義了一個sendRedirect()方法,該方法用于生成302響應(yīng)碼和Location響應(yīng)頭,從而通知客戶端重新訪問Location響應(yīng)頭中指定的URL,sendRedirect()方法的完整語法如下所示:需要注意的是,參數(shù)location可以使用相對URL,Web服務(wù)器會自動將相對URL翻譯成絕對URL,再生成Location頭字段。注意:請求重定向整過過程是發(fā)了兩次請求,得到到兩次響應(yīng)請求與響應(yīng)——HttpServletRequest對象在ServletAPI中,定義了一個HttpServletRequest接口,它繼承自ServletRequest接口,專門用來封裝HTTP請求消息。由于HTTP請求消息分為請求行、請求消息頭和請求消息體三部分,因此,在HttpServletRequest接口中定義了獲取請求行、請求頭和請求消息體的相關(guān)方法,接下來,本節(jié)將針對這些方法進(jìn)行詳細(xì)地講解。請求與響應(yīng)——HttpServletRequest對象請求與響應(yīng)——HttpServletRequest對象操作請求域(用于存儲,獲取,移除相關(guān)的鍵值對數(shù)據(jù))請求與響應(yīng)——RequestDispatcher對象及應(yīng)用獲取到Reque

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論