課件與代碼03.和工具02http協(xié)議_第1頁
課件與代碼03.和工具02http協(xié)議_第2頁
課件與代碼03.和工具02http協(xié)議_第3頁
課件與代碼03.和工具02http協(xié)議_第4頁
課件與代碼03.和工具02http協(xié)議_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、廣州傳智播客 HTTP協(xié)議徐仕鋒廣州傳智播客 Tip1:什么是HTTP協(xié)議客戶端連上web服務(wù)器后,若想獲得web服務(wù)器中的某個(gè)web資源,需遵守一定的通訊格式,HTTP協(xié)議用于定義客戶端與web服務(wù)器通迅的格式。使用telnet程序連上web服務(wù)器,并使用HTTP協(xié)議獲取某個(gè)頁面,以快速了解 HTTP協(xié)議的作用。利用一些瀏覽器的插件可以查看Http協(xié)議的詳細(xì)內(nèi)容(如IE的HttpWatch,火狐的firebug,Ghrome自帶工具)。廣州傳智播客 Tip2:HTTP協(xié)議簡介HTTP是hypertext transfer protocol(超文本傳輸協(xié)議)的簡寫,它是TCP/IP協(xié)議的一個(gè)應(yīng)

2、用層協(xié)議,用于定義WEB瀏覽器與WEB服務(wù)器之間交換數(shù)據(jù)的過程。 HTTP協(xié)議是學(xué)習(xí)JavaWEB開發(fā)的基石,不深入了解HTTP協(xié)議,就不能說掌握了WEB開發(fā),更無法管理和維護(hù)一些復(fù)雜的WEB站點(diǎn)。HTTP協(xié)議的版本:HTTP/1.0、HTTP/1.1telnet工具廣州傳智播客 1、格式:telnet ip地址 端口如:telnet 1 80802、CRTL+ ,然后回車3、這時(shí)可以輸入請(qǐng)求命令廣州傳智播客 Tip3:HTTP1.0和HTTP1.1的區(qū)別在HTTP1.0協(xié)議中,客戶端與web服務(wù)器建立連接后,只能獲得一個(gè)web資源。HTTP1.1協(xié)議,允許客戶端與web服務(wù)器建立連接后,在一

3、個(gè)連接上獲取多個(gè)web資源。使用telnet舉例說明。一個(gè)好多同學(xué)搞不清楚的問題:一個(gè)web頁面中,使用img標(biāo)簽引用了三幅圖片,當(dāng)客戶端訪問服務(wù)器中的這個(gè)web頁面時(shí),客戶端總共會(huì)訪問幾次服務(wù)器,即向服務(wù)器發(fā)送了幾次HTTP請(qǐng)求。廣州傳智播客 Tip4:HTTP請(qǐng)求舉例:GET /books/java.html HTTP/1.1Accept: */*Accept-Language: en-usConnection: Keep-AliveHost: localhostReferer: User-Agent: Mozilla/4.0Accept-Encoding: gzip, deflate 客

4、戶端連上服務(wù)器后,向服務(wù)器請(qǐng)求某個(gè)web資源,稱之為客戶端向服務(wù)器發(fā)送了一個(gè)HTTP請(qǐng)求。一個(gè)完整的HTTP請(qǐng)求包括如下內(nèi)容:一個(gè)請(qǐng)求行、若干請(qǐng)求頭、以及實(shí)體內(nèi)容,其中的一些消息頭和實(shí)體內(nèi)容都是可選的,消息頭和實(shí)體內(nèi)容之間要用空行隔開。如下所示 :請(qǐng)求行一個(gè)空行多個(gè)消息頭請(qǐng)求行用于描述客戶端的請(qǐng)求方式、請(qǐng)求的資源名稱,以及使用的HTTP協(xié)議版本號(hào)消息頭用于描述客戶端請(qǐng)求哪臺(tái)主機(jī),以及客戶端的一些環(huán)境信息等廣州傳智播客 Tip5:HTTP請(qǐng)求的細(xì)節(jié)請(qǐng)求行請(qǐng)求行中的GET稱之為請(qǐng)求方式,請(qǐng)求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT常用的有:POST、GE

5、T 不管POST或GET,都用于向服務(wù)器請(qǐng)求某個(gè)WEB資源,這兩種方式的區(qū)別主要表現(xiàn)在數(shù)據(jù)傳遞上,客戶端通過這兩種方式都可以帶一些數(shù)據(jù)給服務(wù)器:如請(qǐng)求方式為GET方式,則可以在請(qǐng)求的URL地址后以?的形式帶上交給服務(wù)器的數(shù)據(jù),多個(gè)數(shù)據(jù)之間以&進(jìn)行分隔,例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1GET方式的特點(diǎn):在URL地址后附帶的參數(shù)是有限制的,其數(shù)據(jù)容量不能超過1K。如請(qǐng)求方式為POST方式,則可以在請(qǐng)求的實(shí)體內(nèi)容中向服務(wù)器發(fā)送數(shù)據(jù),例如:POST /servlet/ParamsServlet HTTP/1.1Host:Content

6、-Type: application/x-www-form-urlencodedContent-Length: 28name=abc&password=xyzPost方式的特點(diǎn):傳送的數(shù)據(jù)量無限制。廣州傳智播客 Tip6:HTTP請(qǐng)求的細(xì)節(jié)請(qǐng)求頭用于HTTP請(qǐng)求中的常用頭Accept: text/html,image/*Accept-Charset: ISO-8859-1Accept-Encoding: pressAccept-Language: en-us,zh-Host: If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMTReferer: Us

7、er-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)Cookie:Connection: close/Keep-AliveDate: Tue, 11 Jul 2000 18:23:51 GMT廣州傳智播客 HttpServletRequest徐仕鋒廣州傳智播客 Tip:HttpServletRequestHttpServletRequest對(duì)象代表客戶端的請(qǐng)求,當(dāng)客戶端通過HTTP協(xié)議訪問服務(wù)器時(shí),HTTP請(qǐng)求頭中的所有信息都封裝在這個(gè)對(duì)象中,開發(fā)人員通過這個(gè)對(duì)象的方法,可以獲得客戶這些信息。廣州傳智播客 Tip:Reques

8、t常用方法獲得客戶機(jī)信息getRequestURL方法返回客戶端發(fā)出請(qǐng)求時(shí)的完整URL。getRequestURI方法返回請(qǐng)求行中的資源名部分。getQueryString 方法返回請(qǐng)求行中的參數(shù)部分。getPathInfo方法返回請(qǐng)求URL中的額外路徑信息。額外路徑信息是請(qǐng)求URL中的位于Servlet的路徑之后和查詢參數(shù)之前的內(nèi)容,它以“/”開頭。getRemoteAddr方法返回發(fā)出請(qǐng)求的客戶機(jī)的IP地址getRemoteHost方法返回發(fā)出請(qǐng)求的客戶機(jī)的完整主機(jī)名getRemotePort方法返回客戶機(jī)所使用的網(wǎng)絡(luò)端口號(hào)getLocalAddr方法返回WEB服務(wù)器的IP地址。getLo

9、calName方法返回WEB服務(wù)器的主機(jī)名廣州傳智播客 Tip: Request常用方法獲得客戶機(jī)請(qǐng)求頭getHeader方法 getHeaders方法 getHeaderNames方法 獲得客戶機(jī)請(qǐng)求參數(shù)(客戶端提交的數(shù)據(jù))getParameter方法getParameterValues(String name)方法getParameterNames方法 getParameterMap方法廣州傳智播客 Tip: request常見應(yīng)用獲取瀏覽器類型防盜鏈各種表單輸入項(xiàng)數(shù)據(jù)的獲取text、password、radio、checkbox、file、select、textarea、 hidden、

10、image、button給js編程用請(qǐng)求參數(shù)的中文亂碼問題 廣州傳智播客 Tip7:HTTP響應(yīng)舉例:HTTP/1.1 200 OKServer: Microsoft-IIS/5.0Date: Thu, 13 Jul 2000 05:46:53 GMTContent-Length: 2291Content-Type: text/htmlCache-control: private一個(gè)HTTP響應(yīng)代表服務(wù)器向客戶端回送的數(shù)據(jù),它包括:一個(gè)狀態(tài)行、若干響應(yīng)頭、以及實(shí)體內(nèi)容 ,其中的一些消息頭和實(shí)體內(nèi)容都是可選的,消息頭和實(shí)體內(nèi)容之間要用空行隔開。 狀態(tài)行一個(gè)空行多個(gè)消息頭實(shí)體內(nèi)容狀態(tài)行用于描述服務(wù)

11、器對(duì)請(qǐng)求的處理結(jié)果。消息頭用于描述服務(wù)器的基本信息,以及數(shù)據(jù)的描述,服務(wù)器通過這些數(shù)據(jù)的描述信息,可以通知客戶端如何處理等一會(huì)兒它回送的數(shù)據(jù)。代表服務(wù)器向客戶端回送的數(shù)據(jù)廣州傳智播客 Tip8:HTTP響應(yīng)的細(xì)節(jié)狀態(tài)行狀態(tài)行格式: HTTP版本號(hào)狀態(tài)碼原因敘述舉例:HTTP/1.1 200 OK狀態(tài)碼用于表示服務(wù)器對(duì)請(qǐng)求的處理結(jié)果,它是一個(gè)三位的十進(jìn)制數(shù)。響應(yīng)狀態(tài)碼分為5類,如下所示:狀態(tài)碼含義100199表示成功接收請(qǐng)求,要求客戶端繼續(xù)提交下一次請(qǐng)求才能完成整個(gè)處理過程200299 表示成功接收請(qǐng)求并已完成整個(gè)處理過程,常用200300399為完成請(qǐng)求,客戶需進(jìn)一步細(xì)化請(qǐng)求。例如,請(qǐng)求的資源

12、已經(jīng)移動(dòng)一個(gè)新地址,常用302、307和304400499客戶端的請(qǐng)求有錯(cuò)誤,常用404500599服務(wù)器端出現(xiàn)錯(cuò)誤,常用 500廣州傳智播客 Tip9:HTTP響應(yīng)細(xì)節(jié)常用響應(yīng)頭HTTP請(qǐng)求中的常用響應(yīng)頭Location: Server:apache tomcatContent-Encoding: gzip Content-Length: 80Content-Language: zh-cnContent-Type: text/html; charset=GB2312Last-Modified: Tue, 11 Jul 2000 18:23:51 GMTRefresh: Content-Dis

13、position: attachment; filename=aaa.zipTransfer-Encoding: chunkedSet-Cookie:SS=Q0=5Lb_nQ; path=/searchExpires: -1Cache-Control: no-cachePragma: no-cacheConnection: close/Keep-AliveDate: Tue, 11 Jul 2000 18:23:51 GMT廣州傳智播客 Tip10:HTTP請(qǐng)求的細(xì)節(jié)通用信息頭通用信息頭指既能用于請(qǐng)求,又能用于響應(yīng)的一些消息頭。Cache-Control: no-cache Pragma: n

14、o-cache Connection: close/Keep-Alive Date: Tue, 11 Jul 2000 18:23:51 GMT廣州傳智播客 HttpServletResponse對(duì)象徐仕鋒廣州傳智播客 Tip:簡介Web服務(wù)器收到客戶端的http請(qǐng)求,會(huì)針對(duì)每一次請(qǐng)求,分別創(chuàng)建一個(gè)用于代表請(qǐng)求的request對(duì)象、和代表響應(yīng)的response對(duì)象。request和response對(duì)象即然代表請(qǐng)求和響應(yīng),那我們要獲取客戶機(jī)提交過來的數(shù)據(jù),只需要找request對(duì)象就行了。要向客戶機(jī)輸出數(shù)據(jù),只需要找response對(duì)象就行了。廣州傳智播客 Tip:HttpServletResp

15、onseHttpServletResponse對(duì)象服務(wù)器的響應(yīng)。這個(gè)對(duì)象中封裝了向客戶端發(fā)送數(shù)據(jù)、發(fā)送響應(yīng)頭,發(fā)送響應(yīng)狀態(tài)碼的方法。廣州傳智播客 Tip:response常見應(yīng)用案例1:302+location實(shí)現(xiàn)重定向案例2:使用Refresh實(shí)現(xiàn)定時(shí)跳轉(zhuǎn)案例3:使用content-Type實(shí)現(xiàn)向?yàn)g覽器輸出圖片案例4:文件下載功能廣州傳智播客 Tip:response常見應(yīng)用通過response實(shí)現(xiàn)請(qǐng)求重定向。請(qǐng)求重定向指:一個(gè)web資源收到客戶端請(qǐng)求后,通知客戶端去訪問另外一個(gè)web資源,這稱之為請(qǐng)求重定向。應(yīng)用場(chǎng)景:用戶注冊(cè)。實(shí)現(xiàn)方式response.sendRedirect()實(shí)現(xiàn)原理:302狀態(tài)碼和location頭即可實(shí)現(xiàn)重定向廣州傳智播客 Tip:請(qǐng)求重定向的運(yùn)行流程 廣州傳智播客 Tip: response細(xì)節(jié)getOutputStream和getWriter方法分別用于得到輸出二進(jìn)制數(shù)據(jù)、輸出文本數(shù)據(jù)的ServletOuputStream、Printwriter對(duì)象。getOutputStream和getWriter這兩個(gè)方法互相排斥,調(diào)用了其中的任何一個(gè)方法后,就不能再

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論