T10 請(qǐng)求與響應(yīng)詳解課件_第1頁(yè)
T10 請(qǐng)求與響應(yīng)詳解課件_第2頁(yè)
T10 請(qǐng)求與響應(yīng)詳解課件_第3頁(yè)
T10 請(qǐng)求與響應(yīng)詳解課件_第4頁(yè)
T10 請(qǐng)求與響應(yīng)詳解課件_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

請(qǐng)求與響應(yīng)詳解目標(biāo)理解HTTP及MIME解析客戶端請(qǐng)求處理服務(wù)器返回響應(yīng)掌握RequestDispatcher中forward()方法RequestDispatcher中include()方法

體驗(yàn)項(xiàng)目

--制作商品銷售Excel表想知道如何通過(guò)Servlet技術(shù),把用戶提交的信息保存為一個(gè)Excel文件嗎?創(chuàng)建一個(gè)JSP文件,用于提交用戶輸入的信息。創(chuàng)建一個(gè)Servlet,把用戶提交的信息保存為一個(gè)Excel文件。1)啟動(dòng)Tomcat服務(wù)器,在瀏覽器地址欄中輸入“http://localhost:8080/WebModule/excel.jsp”。在表格中填寫需要保存的信息。如圖所示:體驗(yàn)項(xiàng)目

--制作商品銷售Excel表確定保存路徑和文件名后,點(diǎn)擊“保存”按鈕。文件下載完畢后,打開(kāi)Excel表,查看結(jié)果。如圖所示:HTTP與MIMEHTTP(HyperTextTransferProtocol)是一種請(qǐng)求/響應(yīng)模式的協(xié)議。一個(gè)客戶端與服務(wù)器建立連接后,發(fā)送一個(gè)請(qǐng)求給服務(wù)器,請(qǐng)求的格式是:統(tǒng)一資源標(biāo)識(shí)符(URI)、協(xié)議版本號(hào),后面是類似于MIME的信息,包括請(qǐng)求修飾符、客戶機(jī)信息和可能的內(nèi)容。服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息,其格式是:一個(gè)狀態(tài)行包括信息的協(xié)議版本號(hào)、一個(gè)成功或錯(cuò)誤的代碼,后面也是類似MIME的信息,包括服務(wù)器信息、實(shí)體信息等。一個(gè)完整的HTTP事務(wù)處理過(guò)程是:創(chuàng)建TCP/IP連接、客戶端發(fā)出請(qǐng)求信息、服務(wù)器響應(yīng)信息、結(jié)束連接。常用協(xié)議端口在客戶端與服務(wù)器通過(guò)HTTP進(jìn)行通信之前,必須先建立TCP/IP連接。Internet利用TCP/IP協(xié)議在計(jì)算機(jī)之間通信。為了區(qū)分各種協(xié)議,TCP/IP為各種協(xié)議指定了一個(gè)端口號(hào)。常用協(xié)議的端口。MIMEMIME(Multipurpose

Internet

Mail

Extentions),一種指定文件類型的通用方法。它指明了圖像、音頻流、視頻流、二進(jìn)制、應(yīng)用程序和其它多媒體文件類型的格式。一個(gè)MIME類型描述了當(dāng)前文檔屬于哪個(gè)通用的文件組類型,一個(gè)MIME子類型告訴客戶端文件是屬于哪個(gè)通用文件組的哪一個(gè)具體類型。例如我們常用到的“text/html”代表了描述當(dāng)前文檔是網(wǎng)頁(yè)類型。處理HTTP請(qǐng)求報(bào)頭在讀取請(qǐng)求報(bào)頭的時(shí)候,我們通常用的方法是HttpServletRequest的getHeader(Stringname)方法、getHeaderNames()方法和getHeaders(Stringname)。下圖代表了一個(gè)典型的HTTP請(qǐng)求常見(jiàn)的HTTP請(qǐng)求報(bào)頭域Host:主要用于指定被請(qǐng)求資源的Internet主機(jī)和端口號(hào),它通常是從HTTPURL中提取出來(lái)的。User-Agent:允許客戶端將它的操作系統(tǒng)瀏覽器和其他屬性告訴服務(wù)器。Connnection:標(biāo)明客戶是否能夠處理持續(xù)性HTTP連接。持續(xù)性連接允許客戶或者瀏覽器在單個(gè)socket中讀取多個(gè)文件,從而節(jié)省協(xié)商幾個(gè)獨(dú)立連接所需的開(kāi)銷。Cookie:向服務(wù)器返回cookie,這些cookie是之前由服務(wù)器發(fā)送給瀏覽器的:request.getCookies。Referer:包含一個(gè)URL,用戶從該URL代表的頁(yè)面出發(fā)訪問(wèn)當(dāng)前請(qǐng)求的頁(yè)面。也可以要用戶設(shè)置相應(yīng)參數(shù),然后再返回到跳轉(zhuǎn)過(guò)來(lái)的頁(yè)面response.setStatus(intstatusCode):setStatus()方法的參數(shù)是一個(gè)整數(shù)(即狀態(tài)代碼),不過(guò)為了使得代碼具有更好的可讀性,可以用HttpServletResponse中定義的常量來(lái)避免直接使用整數(shù)。response.sendError(intcode,Stringmessage):該方法生成一個(gè)404應(yīng)答,同時(shí)生成一個(gè)簡(jiǎn)短的HTML錯(cuò)誤信息文檔response.sendRedirect(Stringurl):該方法生成一個(gè)302應(yīng)答,同時(shí)在Location頭中指示新文檔的URL。設(shè)置狀態(tài)代碼一般用到三種方法:

常見(jiàn)的HTTP狀態(tài)代碼響應(yīng)生成HTTP響應(yīng)報(bào)頭響應(yīng)報(bào)頭往往是隨著狀態(tài)碼的不同而不同的。響應(yīng)報(bào)頭的用處很多,可以用來(lái)指定cookie,提供頁(yè)面修改日期,設(shè)置瀏覽器多少時(shí)間間隔重新載入頁(yè)面,給出文件的大小使持續(xù)性http連接成為可能,指定生成文檔的類型和執(zhí)行其它一些任務(wù)。在Servlet中設(shè)置響應(yīng)報(bào)頭指定報(bào)頭時(shí),最通用的方式是采用HttpServletResponse的setHeader(Stringname,Stringvalue)方法,這個(gè)方法接收兩個(gè)字符串,報(bào)頭的名稱和報(bào)頭的值。

setHeader(StringheaderName,StringheaderValue):設(shè)置/替換報(bào)頭。setDateHeader(Stringheader,longmilliseconds):把java日期轉(zhuǎn)換設(shè)置/替換成報(bào)頭。setIntHeader(Stringheader,intheaderValue):把整數(shù)設(shè)置/替換成報(bào)頭。有關(guān)報(bào)頭設(shè)置的方法containsHeader(Stringname):檢查報(bào)頭是否已經(jīng)存在。addHeader(Stringname,Stringvalue):添加一個(gè)報(bào)頭,用于加多個(gè)報(bào)頭的情況。addDateHeader(Stringname,longdate):添加一個(gè)日期報(bào)頭,用于加多個(gè)報(bào)頭的情況。addIntHeader(Stringname,intvalue):添加一個(gè)整數(shù)報(bào)頭,用于加多個(gè)報(bào)頭的情況。setContentType(StringmimeType):設(shè)置content-type報(bào)頭。setContentLength(intlength):設(shè)置Content-Length報(bào)頭,如果瀏覽器支持持續(xù)性http連接,這個(gè)報(bào)頭很有用。addCookie(Cookiec):向Set-Cookie報(bào)頭插入一個(gè)Cookie,一般的響應(yīng)中都有多個(gè)Set-Cookie行,所以對(duì)Cookie只有addCookie方法而沒(méi)有setCookie方法。sendRedirect(Stringaddress):重定向,將狀態(tài)碼設(shè)為302,并設(shè)置Location報(bào)頭。常用的HTTP響應(yīng)報(bào)頭Allow:指定服務(wù)器支持的請(qǐng)求方法(GET、POST等),405響應(yīng)需要這個(gè)報(bào)頭。Servlet默認(rèn)的service方法會(huì)自動(dòng)的為OPTIONS請(qǐng)求生成這個(gè)報(bào)頭。Cache-Control:指定如何安全的緩存文檔,它的具體取值參見(jiàn)“Cache-Control取值內(nèi)容”。Connection:有兩個(gè)取值close:指示瀏覽器不要使用持續(xù)性HTTP連接,技術(shù)上如果客戶程序支持HTTP默認(rèn)為keep-alive方式連接keep-alive:持續(xù)性連接,HTTP的默認(rèn)就是持續(xù)性連接,一般不需要顯示生命持續(xù)性連接。Content-Disposition:該報(bào)頭可以要求瀏覽器詢問(wèn)用戶,把響應(yīng)存儲(chǔ)在磁盤給定名稱的文件中,格式如下Content-Disposition:attachment;filename=<文件名>。Content-Encoding:設(shè)置傳輸過(guò)程中的編碼方式。其中Cache-Control取值內(nèi)容如下Servlet請(qǐng)求轉(zhuǎn)發(fā)在構(gòu)建一個(gè)web應(yīng)用時(shí),經(jīng)常要把請(qǐng)求轉(zhuǎn)發(fā)給另一個(gè)Servlet處理,或者在響應(yīng)中包含另一個(gè)Servlet的輸出。在Servlet中,RequestDispatcher接口提供了一種請(qǐng)求轉(zhuǎn)發(fā)機(jī)制。Servlet類使用“javax.servlet.RequestDispatcher”類中的forward()方法來(lái)轉(zhuǎn)發(fā)它所接收到的HTTP請(qǐng)求轉(zhuǎn)發(fā)目標(biāo)組件將處理該請(qǐng)求并生成響應(yīng)結(jié)果,或者將請(qǐng)求繼續(xù)轉(zhuǎn)發(fā)到另外一個(gè)組件。最初請(qǐng)求的ServletRequest和ServletResponse對(duì)象將被傳遞給轉(zhuǎn)發(fā)目標(biāo)組件,這使得目標(biāo)組件可以訪問(wèn)整個(gè)請(qǐng)求的上下文。轉(zhuǎn)發(fā)方法一通過(guò)ServletRequest接口提供的“getRequestDispatcher(Stringpath)”方法實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)。轉(zhuǎn)發(fā)方法二通過(guò)ServletContext接口提供的getRequestDispatcher(Stringpath)方法實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)。getRequestDispatcher()方法使用String類型的參數(shù)描述ServletContext作用域的路徑。該路徑必須相對(duì)于ServletContext的根目錄,并且以“/”開(kāi)頭。該方法使用路徑(path)來(lái)查找Servlet,用RequestDispatcher對(duì)象包裝,然后返回結(jié)果對(duì)象。如果沒(méi)有基于指定路徑的Servlet,則提供一個(gè)RequestDispatcher返回路徑值。轉(zhuǎn)發(fā)方法三通過(guò)ServletContext接口提供的getNamedDispatche(Stringname)方法實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)。getNamedDispatcher()方法以String類型的變量為參數(shù)表示ServletContext已知的Servlet名稱。如果找到Servlet,用RequestDispatcher對(duì)象將它包裝并返回。如果沒(méi)有和指定名稱關(guān)聯(lián)的Servlet,該方法必須返回null。轉(zhuǎn)發(fā)方法三include()方法RequestDispatcher接口的include()方法的目標(biāo)Servlet可以完整訪問(wèn)request對(duì)象,但是在使用response對(duì)象上有一些限制。它只能向response對(duì)象的ServletOutputStream或者Writer寫入信息,提交響應(yīng)(將內(nèi)容輸出到響應(yīng)緩沖尾部),或者顯式調(diào)用ServletResponse接口的flushBuffer()方法。它不能設(shè)置header,或者調(diào)用任何影響響應(yīng)header的方法。任何那樣的嘗試必須都被忽略。當(dāng)調(diào)用include

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論