




免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
客戶端與服務(wù)器端交互原理經(jīng)??吹紿TTP客戶端與服務(wù)器端交互原理的各種版本的文章,但是專業(yè)術(shù)語太多,且流程過于復(fù)雜,不容易消化。于是就按照在 Servlet 里面的內(nèi)容大致做了一些穿插。本來連 Tomcat 容器 和 Servlet 的生命周期也準(zhǔn)備在這里一起寫的,但怕過于龐大,于是就簡單的引用了一些 Servlet 對象。這樣的一個整個流程看下來,相信至少在理解 HTTP協(xié)議和 request 和 response 是如何完成從請求到生成響應(yīng)結(jié)果回發(fā)的。在后續(xù)的一些文章里會專門講一講 Tomcat 和 Servlet 是如何處理請求和完成響應(yīng)的,更多的是說明Servlet 的生命周期。HTTP介紹1.HTTP是一種超文本傳送協(xié)議(HyperText Transfer Protocol),是一套計(jì)算機(jī)在網(wǎng)絡(luò)中通信的一種規(guī)則。在TCP/IP體系結(jié)構(gòu)中,HTTP屬于應(yīng)用層協(xié)議,位于TCP/IP協(xié)議的頂層。2.HTTP是一種無狀態(tài)的協(xié)議,意思是指在Web 瀏覽器(客戶端)和 Web 服務(wù)器之間不需要建立持久的連接。整個過程就是當(dāng)一個客戶端向服務(wù)器端發(fā)送一個請求(request),然后Web服務(wù)器返回一個響應(yīng)(response),之后連接就關(guān)閉了,在服務(wù)端此時是沒有保留連接的信息。3.HTTP 遵循請求/響應(yīng)(request/response)模型的,所有的通信交互都被構(gòu)造在一套請求和響應(yīng)模型中。4.瀏覽Web時,瀏覽器通過HTTP協(xié)議與Web服務(wù)器交換信息,Web服務(wù)器向Web瀏覽器返回的文件都有與之相關(guān)的類型,這些信息類型的格式由MIME定義。HTTP定義的事務(wù)處理由以下四步組成: 1.建立連接。2.客戶端發(fā)送HTTP請求頭。3.服務(wù)器端響應(yīng)生成結(jié)果回發(fā)。4.服務(wù)器端關(guān)閉連接,客戶端解析回發(fā)響應(yīng)頭,恢復(fù)頁面。1.建立連接:以下用我的另一篇文章的地址做為例子 Servlet容器(Tomacat)介紹及配置客戶端,也就是我請求一個地址時,即打開了到 Web 服務(wù)器的HTTP端口的一個套接字。因?yàn)樵诰W(wǎng)絡(luò)中間作為傳遞數(shù)據(jù)的實(shí)體介質(zhì)就是網(wǎng)線,數(shù)據(jù)實(shí)質(zhì)上是通過IO流進(jìn)行輸出和輸入,這就不難理解我們?yōu)槭裁丛趯懸粋€Servlet的時候要引用 import java.io.*; 的原因,包括我們在向客戶端回發(fā)結(jié)果的時候要用到 PrintWriter 對象的println()方法。比如我在這里請求CSDN社區(qū)的一個地址,實(shí)際上首先要請求這個地址,以及一個端口80(8080):80 80可以不寫,是因?yàn)闉g覽器網(wǎng)頁服務(wù)默認(rèn)的端口號是 80.在Java底層代碼中是這樣實(shí)現(xiàn)的,只不過它們已經(jīng)幫我們做了。Socket socket=new Socket(,8080);InputStream in=socket.getInputStream();OutputStream out=socket.getOutputStream();2.客戶端發(fā)送HTTP請求頭一旦建立了TCP連接,Web瀏覽器就會向Web服務(wù)器發(fā)送請求命令,是一個ASCII文本請求行,后跟0個或多個HTTP頭標(biāo),一個空行和實(shí)現(xiàn)請求的任意數(shù)據(jù)。四個部分:請求行,請求頭標(biāo),空行和請求數(shù)據(jù)。1)請求行由三個標(biāo)記組成:請求方法 請求URL HTTP版本,中間用空格分開例如:GET lvpin/archive/2007/06/09/1645767.aspx HTTP/1.1HTTP規(guī)范定義了8種可能的請求方法:(最常見的就是 GET 和 POST 兩種方法)GET 檢索URI中標(biāo)識資源的一個簡單請求HEAD 與GET方法相同,服務(wù)器只返回狀態(tài)行和頭標(biāo),并不返回請求文檔POST 服務(wù)器接受被寫入客戶端輸出流中的數(shù)據(jù)的請求PUT 服務(wù)器保存請求數(shù)據(jù)作為指定URI新內(nèi)容的請求DELETE 服務(wù)器刪除URI中命名的資源的請求OPTIONS 關(guān)于服務(wù)器支持的請求方法信息的請求TRACE Web服務(wù)器反饋Http請求和其頭標(biāo)的請求CONNECT 已文檔化但當(dāng)前未實(shí)現(xiàn)的一個方法,預(yù)留做隧道處理2)請求頭標(biāo):由key :value 鍵值組成,每行一對。請求頭標(biāo)通知服務(wù)器有關(guān)客戶端的功能和標(biāo)識。HOST 請求的哪一個服務(wù)器端地址,主地址 ,比如 我現(xiàn)在所在的CSDN /User-Agent 用戶即客戶端可以使用的瀏覽器 ,如 : Mozilla/4.0 Accept 即客戶端可以接受的MIME 類型列表,如image/gif text/html, application/msword Content-Length 只適用于POST請求,以字節(jié)給出POST數(shù)據(jù)的尺寸3)空行 發(fā)送回車符和退行,通知服務(wù)器以下不再有頭標(biāo)。4)請求數(shù)據(jù):使用POST傳送數(shù)據(jù),最常使用的是Content-Type和Content-Length頭標(biāo)??偨Y(jié)以上 我們可以這樣寫出一個標(biāo)準(zhǔn)的 HTTP請求POST /lvpin/archive/2007/06/09/1645767.aspx HTTP1.1HOST: /User-Agent :Mozilla/4.0Accpt: image/gif,text/html,application/pdf,image/png.key=value&key=value&key=value.(POST()請求的數(shù)據(jù))那么,這上面的一個例子說明的就是 我要去訪問的服務(wù)器端的地址是/ 它下面的資源 /lvpin/archive/2007/06/09/1645767.aspx連起來就是 /lvpin/archive/2007/06/09/1645767.aspx這個頁面用的是 HTTP1.1 規(guī)范 我的瀏覽器版本是Mozilla/4.0 可以支持的MIME格式為 image/gif,text/html,application/pdf,image/png.等等這個MIME格式我們r(jià)esponse.setContentType(text/html;charset=gb2312);或者在一個 或者總能見到那么在這里如何理解 GET 和 POST 最直觀的區(qū)別,最明顯的就是 GET方法將數(shù)據(jù)的請求跟在了所請求的URL后面,也就是在請求行里面我們是這么樣來做的:GET lvpin/archive/2007/06/09/1645767.aspx?key=value&key=value&key=value.HTTP1.1也實(shí)際上就是 用 GET 如此傳遞數(shù)據(jù) :/lvpin/archive/2007/06/09/1645767.aspx?name=simon&password=simonlv.3.服務(wù)器端接受請求,處理數(shù)據(jù)后生成響應(yīng)返回?cái)?shù)據(jù)到客戶端 (部分Servlet 內(nèi)容穿插)Web 服務(wù)器 解析請求,定位指定的資源/lvpin/archive/2007/06/09/1645767.aspx1)根據(jù)在 請求時的 GET/POST 來按照響應(yīng)的 doGet() /doPost()方法來處理(有可能是一些業(yè)務(wù)邏輯,也有可能是一些驗(yàn)證等等,也有可能是一些數(shù)據(jù)查詢,提交等等)其有效的數(shù)據(jù)就來源于name=simon&password=simonlv,還有其它的一些封裝在 request 對象中的數(shù)據(jù)資源。2)處理請求之后,由 response 對象得到 PriterWriter 輸出流對象out ,通過 out.println () 將數(shù)據(jù)以 在客戶端提交過的采用的Accpt: 中形式的一種 如 按照 response.setcontentType(text/html;charset=gb2312 )的格式輸出流。它的響應(yīng)信息與請求信息非常類似,其區(qū)別就在于 我們在請求階段的請求行被狀態(tài)行給替換了,一個響應(yīng)由四個部分組成:狀態(tài)行、響應(yīng)頭標(biāo)、空行、響應(yīng)數(shù)據(jù)1.狀態(tài)行:狀態(tài)行由三個標(biāo)記組成:HTTP版本、響應(yīng)代碼和響應(yīng)描述。HTTP1.1 100 continue -繼續(xù)追加后繼內(nèi)容HTTP1.1 200 OK -一切正常HTTP1.1 301 Moved Permanently -請求的文檔在其它地方,會自動連接 HTTP1.1 403 Forbidden -絕對拒絕你訪問這個資源,不管授權(quán)沒有HTTP1.1 400 Bad Request -客戶端請求中的不良語法HTTP1.1 404 Not Found -最常見,絕對是大名鼎鼎的找不到HTTP響應(yīng)碼:1xx:提示性信息,告訴客戶端應(yīng)該對某些其它的動作做出響應(yīng)2xx:這些就代表了請求成功3xx:重定向,為了完成請求,必須進(jìn)一步執(zhí)行的動作4xx:客戶端錯誤500-599:服務(wù)器端的錯誤2.響應(yīng)頭標(biāo):像請求頭標(biāo)一樣,它們指出服務(wù)器的功能,標(biāo)識出響應(yīng)數(shù)據(jù)的細(xì)節(jié)。Date: Sat,31 Dec 2005 23:59:59 GMT -響應(yīng)生成的日期和時間ContentType: text/html;charset=gb2312 Content-Length: 122 -響應(yīng)中的字節(jié)數(shù),只在瀏覽器使用永久(Keep-alive)HTTP連接時需要。3.空行:最后一個響應(yīng)頭標(biāo)之后是一個空行,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省地球物理調(diào)查研究所招聘筆試真題2024
- 2024年鄂州消防招聘政府專職消防員考試真題
- 2025至2030特色餐飲行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025年金融行業(yè)數(shù)據(jù)治理與數(shù)據(jù)資產(chǎn)化在金融風(fēng)險(xiǎn)管理中的創(chuàng)新案例報(bào)告
- 2025至2030日間行車燈(DRL)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 2025至2030工業(yè)鎳基電池行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 塔吊安裝安全專項(xiàng)施工方案(模板)
- 2025至2030家紡行業(yè)項(xiàng)目調(diào)研及市場前景預(yù)測評估報(bào)告
- 2025至2030天然水行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 創(chuàng)新藥物研發(fā)關(guān)鍵環(huán)節(jié):2025年靶點(diǎn)驗(yàn)證技術(shù)突破與應(yīng)用報(bào)告
- T-CECA-G 0307-2024 數(shù)字化碳管理平臺 建設(shè)評價(jià)指南
- 侘寂風(fēng)設(shè)計(jì)元素解析
- 2024年河南省中等職業(yè)教化技能大賽汽車運(yùn)用與修理類競賽方案
- 《經(jīng)皮椎弓根內(nèi)固定》課件
- 犬真菌性皮膚病
- 醫(yī)藥研發(fā)流程及質(zhì)量管理手冊
- 合同協(xié)議模板摩托車轉(zhuǎn)讓協(xié)議
- 2024年廣東省中考政治真題(含解析)
- 國家開放大學(xué)本科《人文英語4》一平臺機(jī)考真題及答案(第八套)
- 2024-2030年中國滾珠絲杠市場消費(fèi)需求與未來發(fā)展趨勢預(yù)測研究報(bào)告
- 大中小學(xué)思政課一體化心得體會5篇
評論
0/150
提交評論