精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺析Java web程序之客戶端和服務器端交互原理

開發 后端
本文從兩個內容淺析了Java web程序的客戶端和服務器端交互原理,第一,協議;第二,HTTP保溫接口及客戶端和服務器端的交互原理。詳細請看下文

1. 協議

a. TCP/IP整體構架概述

TCP/IP協議并不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網路層、傳輸層、話路層、表示層和應用層。而TCP/IP通訊協議采用了4層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。這4層分別為:

i. 應用層:應用程序間溝通的層,如超文本傳送協議(HTTP)、簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等。

ii. 傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據并把它傳輸到下一層中,這一層負責傳送數據,并且確定數據已被送達并接收。

iii. 互連網絡層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。

iv. 網絡接口層:對實際的網絡媒體的管理,定義如何使用實際網絡(如Ethernet、Serial Line等)來傳送數據。

b. HTTP協議介紹:

i. HTTP是一種超文本傳送協議(HyperText Transfer Protocol),是一套計算機在網絡中通信的一種規則。在TCP/IP體系結構中,HTTP屬于應用層協議,位于TCP/IP協議的頂層

ii. HTTP是一種無狀態的的協議,意思是指 在Web 瀏覽器(客戶端)和 Web 服務器之間不需要建立持久的連接。整個過程就是當一個客戶端向服務器端發送一個請求(request),然后Web服務器返回一個響應 (response),之后連接就關閉了,在服務端此時是沒有保留連接的信息。

iii. HTTP 遵循 請求/響應(request/response) 模型的,所有的通信交互都被構造在一套請求和響應模型中。

iv. 瀏覽WEB時,瀏覽器通過HTTP協議與WEB服務器交換信息,Web服務器向Web瀏覽器返回的文件都有與之相關的類型,這些信息類型的格式由MIME定義。

c. 協議的java實現方式

不論是TCP/IP協議也好,還是HTTP協議也好,java都是通過套接字(java.net.Socket)來實現的,可以參考我的另一篇技術博客:一個項目看java TCP/IP Socket編程(1.3版)

2. HTTP報文接口及客戶端和服務器端交互原理

a. HTTP定義的事務處理由以下四步組成:

i. 建立連接:

例如我在瀏覽器里輸入 http://cuishen.iteye.com,客戶端請求這個地址時即打開了web服務器HTTP端口的一個套接字。因為在網絡中間作為傳遞數據的實體介質就是網線,數據實質上是通過IO流進行輸出和輸入,這就不難理解我們為什么在寫一個Servlet的時候要引用 import java.io.*; 的原因 ,包括我們在向客戶端回發結果的時候要用到PrintWriter對象的println()方法。其實請求的這個地址還要加上端口號80,80可以不寫,是因為瀏覽器默認的端口號是80。

在Java底層代碼中是這樣實現的,只不過它們已經幫我們做了。

  1. Socket socket = new Socket("cuishen.iteye.com",80);    
  2. InputStream in = socket.getInputStream();    
  3. OutputStream out = socket.getOutputStream();   

ii. 客戶端發送HTTP請求報文(request)

一旦建立了TCP連接,Web瀏覽器就會向Web服務器發送請求命令,是一個ASCII文本請求行,后跟0個或多個HTTP頭標,一個空行和實現請求的任意數據。

即報文分四個部分:請求行,請求頭標,空行和請求數據

1)請求行

請求行由三個標記組成:請求方法、請求URL和HTTP版本,中間用空格分開

例如: GET cuishen.iteye.com/blog/242842 HTTP/1.1

HTTP規范定義了8種可能的請求方法:(最常見的就是 GET 和 POST 兩種方法)

  • GET -- 檢索URI中標識資源的一個簡單請求
  • HEAD -- 與GET方法相同,服務器只返回狀態行和頭標,并不返回請求文檔
  • POST -- 服務器接受被寫入客戶端輸出流中的數據的請求
  • PUT -- 服務器保存請求數據作為指定URI新內容的請求
  • DELETE -- 服務器刪除URI中命名的資源的請求
  • OPTIONS -- 關于服務器支持的請求方法信息的請求
  • TRACE -- Web服務器反饋Http請求和其頭標的請求
  • CONNECT -- 已文檔化但當前未實現的一個方法,預留做隧道處理

2)請求頭標

請求頭標:由key :value 健值組成,每行一對。請求頭標用來通知服務器有關客戶端的功能和標識。

HOST -- 請求的哪一個服務器端地址,主地址,比如:我的技術blog:cuishen.iteye.com
User-Agent -- 用戶即客戶端可以使用的瀏覽器 ,如: Mozilla/4.0
Accept -- 即客戶端可以接受的MIME 類型列表,如image/gif、text/html、application/msword
Content-Length -- 只適用于POST請求,以字節給出POST數據的尺寸

3)空行

發送回車符和退行,通知服務器以下不再有頭標。

4)請求數據

使用POST傳送數據,最常使用的是Content-Type和Content-Length頭標。

請求報文總結:

我們可以這樣寫出一個標準的 HTTP請求:

POST /blog/242842 HTTP1.1
HOST: cuishen.iteye.com/
User-Agent: Mozilla/4.0
Accpt: image/gif,text/html,application/pdf,image/png...
key=value&key=value&key=value...... (POST()請求的數據)

這上面的一個例子意思是:

我要去訪問的服務器端的地址是cuishen.iteye.com/ 它下面的資源 /blog/242842
連起來就是: cuishen.iteye.com/blog/242842
這個頁面用的是 HTTP1.1 規范,我的瀏覽器版本是Mozilla/4.0
可以支持的MIME格式為 image/gif,text/html,application/pdf,image/png...等等
這個MIME格式我們在servlet中寫法是:response.setContentType("text/html;charset=gb2312");
或者在jsp中寫法是:<%@ page contentType="text/html;charset=gb2312"%>
或者在html中寫法是:<meta http-equiv="content-Type" content="text/html; charset=gb2312">

GET 和 POST 最直觀的區別就是:GET方法將數據的請求跟在了所請求的URL后面,也就是在請求行里面我們是這么樣來做的:

  1. GET /blog/242842?key=value&key=value&key=value......HTTP1.1 

實際上用 GET 是這樣傳遞數據的:

  1. http://cuishen.iteye.com/?page=2...... 

iii.服務器端響應請求生成結果并回發(response)

Web 服務器解析請求,定位指定的資源 http://cuishen.iteye.com/blog/242842

1)根據請求時的 GET/POST 對應的用servlet里的 doGet() / doPost()方法來處理(有可能是一些業務邏輯,也有可能是一些驗證等等,也有可能是一些數據查詢,提交等等)其有效的數據就來源于key=value&key=value&key=value......,以及其它的一些封裝在 request 對象中的數據資源。

2)處理請求之后,由 response 對象得到 java.io.PrintWriter 輸出流對象out,通過 out.println(); 將數據以指定的格式,如按照response.setcontentType("text/html;charset=gb2312");的格式輸出到輸出流。

它的響應報文與請求報文非常類似,其區別就在于:我們在請求階段的請求行被狀態行給替換了,再來看響應報文:

3)一個響應報文由四個部分組成:狀態行、響應頭標、空行、響應數據:

(a).狀態行:

狀態行由三個標記組成:HTTP版本、響應代碼和響應描述。

HTTP1.1 --- 100 --- continue //繼續追加后繼內容
HTTP1.1 --- 200 --- OK //一切正常
HTTP1.1 --- 301 --- Moved Permanently //請求的文檔在其它地方,會自動連接
HTTP1.1 --- 403 --- Forbidden //絕對拒絕你訪問這個資源,不管授權沒有
HTTP1.1 --- 400 --- Bad Request //客戶端請求中的不良語法
HTTP1.1 --- 404 --- Not Found //最常見,絕對是大名鼎鼎的找不到

HTTP響應碼:

1xx:提示性信息,告訴客戶端應該對某些其它的動作作出響應
2xx:這些就代表了請求成功
3xx:重定向,為了完成請求,必須進一步執行的動作
4xx:客戶端錯誤
500-599: 服務器端的錯誤

(b).響應頭標:像請求頭標一樣,它們指出服務器的功能,標識出響應數據的細節。

Date: Sat, 31 Dec 2005 23:59:59 GMT --響應生成的日期和時間
ContentType: 'text/html;charset=gb2312'
Content-Length: 122 --響應中的字節數,只在瀏覽器使用永久(Keep-alive)HTTP連接時需要。

(c).空行:最后一個響應頭標之后是一個空行,發送回車符和退行,表明服務器以下不再有頭標。

(d).響應數據:HTML文檔和圖像等,也就是HTML本身。out.println("<html>......");寫到客戶端。

  1. <html>    
  2. <head>    
  3. <title>Welcome to cuishen's IT blog</title>    
  4. </head>    
  5. <body>    
  6. <!-- 這里是具體的內容,看到了這里    
  7. 相信大家對 HTTP 工作原理及客戶端與服務器交互過程已經很清楚了吧    
  8. -->     
  9. </body>    
  10. </html> 

iv. 服務器端關閉連接,客戶端解析回發響應報文,恢復頁面

1)瀏覽器先解析狀態行,查看請求是否成功的狀態代碼--HTTP響應碼:404 400 200 ....

2)解析每一個響應頭標,如:

ContentType: text/html;charset=gb2312
Content-Length: 122 --- 響應中的字節數,只在瀏覽器使用永久(Keep-alive)HTTP連接時需要。

3)讀取響應數據HTML,根據標簽<html></html>中的內容恢復標準的HTML格式頁面或者其它。

4)一個HTML 文檔可能包含其它的需要被載入的資源,瀏覽器會識別,并對這些資源再進行額外的請求,這個過程可以是循環的方式一直到所有的數據都按照響應頭標中規定的格式恢復到頁面中。

5)數據傳送完畢,服務器端關閉連接,即無狀態協議。

3. 總結

不要被高深的名詞和理論嚇到,其實HTTP客戶端和服務器端的交互原理很簡單:即先是瀏覽器和服務器端建立Socket無狀態連接,也就是短連接,然后通過IO流進行報文信息(這個報文是嚴格遵循HTTP報文接口的)的交互,最后會話結束后就關閉連接。對于這些底層的協議和報文的打包解包交互的實現,其實java和瀏覽器早都已經封裝好了,程序員只要專注于業務邏輯的實現就行啦,這些都不必關心!!

原文鏈接:http://www.cnblogs.com/lys_013/archive/2012/05/05/2484561.html

【編輯推薦】

  1. Java程序設計:圖形與多媒體處理
  2. Apache CXF實戰之三:傳輸Java對象
  3. JavaScript寫法你更偏向哪個
  4. 看JavaScript如何實現頁面自適
  5. Java集合框架總結:TreeSet類的排序問題

 

責任編輯:林師授 來源: 013的博客
相關推薦

2010-03-01 16:10:32

Linux Samba

2011-03-28 17:24:26

2018-12-20 08:50:53

TCPIP服務器

2010-03-19 09:26:34

Java Socket

2010-01-11 13:05:24

VNC server配

2018-04-12 10:55:41

Android服務器數據

2025-06-19 02:30:00

Spring服務器MCP

2024-02-22 13:47:40

2009-09-16 15:44:25

2009-08-18 12:51:19

服務器+客戶端

2011-06-07 16:01:46

Android 服務器 數據交互

2009-06-10 16:25:02

2021-10-14 08:39:17

Java Netty Java 基礎

2009-08-21 17:33:34

服務器端程序C#網絡編程

2009-08-21 17:39:20

服務器端程序C#網絡編程

2012-07-03 13:55:00

ASP.NET

2009-06-27 20:32:00

LinuxNFS客戶端

2010-11-02 17:01:09

DB2客戶端遠程連接

2009-08-21 14:34:34

C#服務器端表達式

2021-02-07 18:19:44

RabbitMQ客戶端
點贊
收藏

51CTO技術棧公眾號

av电影在线免费| 一级黄色a视频| 一区二区三区视频免费观看| 在线欧美小视频| 欧美h视频在线观看| 亚洲国产999| 日韩二区三区四区| 欧美日本亚洲视频| 69视频在线观看免费| 国产日韩在线观看视频| 欧美日韩国内自拍| 日韩第一页在线观看| 天堂中文字幕av| 精品一区二区综合| 欧美一级电影在线| www.99re7| 精品视频久久| 亚洲精品电影网站| 欧美激情第一区| 精品国产免费人成网站| 亚洲综合色区另类av| 亚洲电影网站| 男人天堂综合| 成人av综合在线| 国产日本欧美一区二区三区| 国产99久久久| 国产综合精品| 久久精品视频在线观看| 中文字幕免费视频| 欧美黄色录像| 精品日韩成人av| 亚洲一区精品视频在线观看| 亚洲最大网站| 精品久久久久久久久久久久久久| 蜜桃视频成人在线观看| 日本在线免费| 国产欧美日产一区| 欧美精彩一区二区三区| 亚洲色图另类小说| 99精品视频在线观看| 高清视频一区二区三区| jizz中国少妇| 国内精品久久久久影院色| 国产精品久久久久影院日本 | 懂色av一区二区| 欧美精品亚洲二区| 黄大色黄女片18第一次| 日韩三区在线| 精品视频在线免费观看| 色哟哟精品视频| 精品网站在线| 欧美性videosxxxxx| 一区二区在线播放视频| 性高爱久久久久久久久| 日本道精品一区二区三区| 97在线播放视频| xxx欧美xxx| 日本电影亚洲天堂一区| 9久久婷婷国产综合精品性色| 制服诱惑亚洲| 欧美天堂亚洲电影院在线播放| 欧美自拍小视频| 国产在视频一区二区三区吞精| 精品视频一区 二区 三区| 超碰超碰在线观看| а天堂中文最新一区二区三区| 91麻豆精品国产91久久久资源速度 | 国产一级特黄a大片99| 亚洲精品视频专区| 91在线一区二区三区| 蜜桃麻豆91| 五月婷婷在线观看| 亚洲精品福利视频网站| 福利视频一区二区三区四区| 一个人www视频在线免费观看| 一本到不卡免费一区二区| 簧片在线免费看| 亚洲日日夜夜| 精品播放一区二区| 色无极影院亚洲| 91不卡在线观看| 97精品久久久| 中文字幕制服诱惑| 国产成人在线电影| 欧美不卡1区2区3区| 日韩在线观看www| 亚洲午夜久久久| 久久久久免费精品| 日韩精品视频中文字幕| 亚洲精品一区二区在线| 中文字幕在线观看2018| 亚洲日本久久| 成人性生交大片免费看小说| 亚州av在线播放| 中文字幕一区二区三| 成年人看的毛片| 成人午夜毛片| 亚洲电影天堂av| 小嫩苞一区二区三区| 日韩图片一区| 国产精品久久久久久久7电影| 精品国产伦一区二区三区| 久久久久久久久久久久久久久99 | 95视频在线观看| 欧美精品momsxxx| 欧美日本亚洲视频| 中文字幕在线网址| 久久网站最新地址| 国产成人艳妇aa视频在线| 91九色综合| 亚洲精品720p| 岛国毛片在线观看| 蜜臀精品一区二区三区在线观看 | 国产日韩欧美在线播放| 天天射天天色天天干| 亚洲精选在线视频| 国产原创精品在线| 首页亚洲中字| 久久久久久久久国产| 亚洲一级特黄毛片| 国产午夜精品久久久久久久| 日韩av高清在线看片| 免费精品一区| 亚洲美女又黄又爽在线观看| 精品视频1区2区| 超碰97在线人人| 日本最新在线视频| 欧美视频中文字幕在线| 一级黄色大片免费看| 久久香蕉国产| 国产精品极品尤物在线观看| 亚洲欧美色视频| 亚洲成人7777| 日本性生活一级片| 欧美日韩亚洲一区三区| 91国产在线播放| gogogogo高清视频在线| 欧美日韩国产一区二区三区地区| 西西444www无码大胆| 亚洲综合电影一区二区三区| 精品一区久久久久久| 大桥未久在线视频| 亚洲国产另类久久精品 | 亚洲AV成人精品| 欧美a级片一区| 亚洲综合在线小说| 宅男在线观看免费高清网站| 在线电影一区二区三区| 国产精品免费人成网站酒店| 国产在线精品一区二区夜色| 中文字幕成人一区| 精品国产乱码一区二区三区| 久久中文字幕在线| www.天堂av.com| 亚洲一区二区三区三| 人妻av一区二区三区| 国产一区视频在线观看免费| 99在线影院| av资源中文在线| 日韩av中文在线| 久久夜色精品国产噜噜亚洲av| 久久婷婷国产综合国色天香| 玩弄japan白嫩少妇hd| 欧美精品系列| 91久久综合亚洲鲁鲁五月天| 午夜影院免费在线| 亚洲成人在线网| 日日噜噜噜噜人人爽亚洲精品| 国产亚洲欧美色| 自拍偷拍21p| 亚洲欧美一级二级三级| 精品不卡在线| 欧美日韩精品免费观看视欧美高清免费大片| 国产一区二区三区在线看 | 久久精品国产亚洲av无码娇色| 成人精品免费网站| 麻豆av免费在线| 久久要要av| 国产精品乱码视频| 视频精品导航| 久久久女女女女999久久| 欧美日本韩国一区二区| 欧美日韩三级一区二区| 欧美黄片一区二区三区| 久久看人人爽人人| 一级做a免费视频| aa亚洲婷婷| 正在播放91九色| 欧美亚洲色图校园春色| 国产日韩中文字幕| 国产调教在线| 按摩亚洲人久久| 欧美老女人性开放| 日韩欧美一级二级三级久久久| 天天干天天色综合| 一区二区三区国产精品| 婷婷色一区二区三区| 国产精品一区专区| 免费日韩视频在线观看| 欧美日韩ab| 亚洲免费精品视频| 小说区图片区色综合区| 亚洲free嫩bbb| 欧美成a人片在线观看久| 欧美激情乱人伦一区| avav免费在线观看| 日韩黄色高清视频| 性做久久久久久久| 欧美日韩www| 日韩欧美国产另类| 精品福利视频导航| 妺妺窝人体色www聚色窝仙踪 | 亚洲一区二区三区四区| 欧美激情一区二区三级高清视频| gogogo高清在线观看免费完整版| 亚洲国产一区自拍| 精品毛片在线观看| 欧美揉bbbbb揉bbbbb| 97久久久久久久| 午夜天堂影视香蕉久久| 欧美黑人猛猛猛| 亚洲欧洲精品天堂一级| 99精品欧美一区二区| 97国产精品videossex| 欧美在线www| 91九色综合久久| 夫妻性生活毛片| 久久精品在这里| 好男人香蕉影院| 国产精品亚洲一区二区三区在线| 91香蕉视频污版| 性色一区二区三区| 欧美日韩一道本| 性直播体位视频在线观看| 午夜天堂影视香蕉久久| 久久久99精品| 亚洲精品国产无套在线观| 熟女少妇a性色生活片毛片| 国产精品久久久99| 天美传媒免费在线观看| 国产精品久久久久永久免费观看| 日韩一级av毛片| av不卡一区二区三区| 国产又黄又粗又猛又爽的视频 | 精品久久久国产| 日韩精品在线免费看| 午夜激情久久久| 成人免费视频毛片| 色8久久精品久久久久久蜜| 天堂网免费视频| 欧美三片在线视频观看 | 青青草一区二区三区| 国产wwwxx| 精品一区免费av| 一个人看的视频www| 国产成人一级电影| 99久久免费看精品国产一区| av影院午夜一区| 97超碰在线资源| 国产精品丝袜一区| 中文字幕五月天| 亚洲国产精品一区二区www | 污污视频在线| 97人人模人人爽人人喊中文字| 伊人久久国产| 国产一区在线播放| 成人三级av在线| 欧美重口乱码一区二区| 欧美残忍xxxx极端| 日韩xxxx视频| 日韩精品三区四区| 免费成人黄色大片| proumb性欧美在线观看| 亚洲黄色小说视频| 亚洲欧美成人一区二区三区| 国产一卡二卡在线| 欧美亚洲精品一区| www.av网站| 亚洲女人天堂色在线7777| 午夜视频成人| 午夜精品视频在线| 美女久久久久久| 国产一区二区精品在线| 国模吧精品视频| 丰满人妻一区二区三区53号| 久久国产精品毛片| 国产一级免费大片| 2020国产精品自拍| 老熟妻内射精品一区| 岛国精品视频在线播放| 夜夜狠狠擅视频| 亚洲精品久久7777777| 欧美三级电影一区二区三区| 久久久亚洲成人| 久久人体av| 精品视频第一区| 亚洲视频电影在线| 日日摸天天爽天天爽视频| 国产精品99久久久久久宅男| 一本加勒比北条麻妃| 亚洲欧美视频在线观看视频| 国产日产精品一区二区三区| 日韩欧美在线1卡| av在线播放网站| 9.1国产丝袜在线观看| 久久99成人| 丝袜足脚交91精品| 国产日韩视频| www.美色吧.com| 亚洲三级电影网站| wwwwww在线观看| 日韩国产精品视频| 黄网在线免费看| 国产主播喷水一区二区| 黑丝美女一区二区| 久久精品精品电影网| 日韩免费一级视频| 国产后入清纯学生妹| 久久久久久久久久看片| 久久久久免费看| 欧美丰满一区二区免费视频| 国产一级在线| 91产国在线观看动作片喷水| 99精品在免费线中文字幕网站一区 | 无码 人妻 在线 视频| 亚洲va欧美va人人爽| 亚洲第一天堂影院| 久久亚洲春色中文字幕| 成人免费毛片嘿嘿连载视频…| 美女黄毛**国产精品啪啪| 在线日本成人| av免费观看不卡| 亚洲一二三区不卡| 亚洲av无码国产精品久久不卡| 久久精品视频在线播放| 91精品国产一区二区在线观看| 无码免费一区二区三区免费播放| 久久久精品性| 色婷婷在线影院| 色综合久久天天综合网| 神马久久精品| 日本成人激情视频| 亚洲人成精品久久久| 日韩欧美xxxx| 国产欧美日韩精品a在线观看| 黄色网址中文字幕| 国产一区二区精品丝袜| 丰满少妇一区| 最新欧美日韩亚洲| 国产精品综合网| 精品无码人妻一区二区三| 亚洲成色www8888| 免费高潮视频95在线观看网站| 精品国产乱码久久久久久蜜柚| 国产精品久久国产愉拍| 国产交换配乱淫视频免费| 91福利社在线观看| 自拍视频在线| 97人人模人人爽人人喊38tv| 伊人成年综合电影网| 性色av蜜臀av色欲av| 色88888久久久久久影院按摩| av中文天堂在线| 成人综合国产精品| 亚洲一级网站| 泷泽萝拉在线播放| 欧美性生活久久| 在线黄色网页| 久久国产精品99久久久久久丝袜| 久久在线精品| 糖心vlog免费在线观看| 亚洲第一福利网站| 欧美日韩亚洲国产| av中文字幕av| 91理论电影在线观看| 亚洲一级视频在线观看| 欧美黑人xxxⅹ高潮交| 亚洲人成精品久久久 | 欧美老人xxxx18| 黄色网页在线看| 国产女人水真多18毛片18精品| 久久精品网址| 在线免费日韩av| 日韩精品有码在线观看| 亚洲精品66| 激情深爱综合网| 欧美激情一区二区三区四区 | 日韩精品一区二区视频| 先锋影音一区二区| 777精品久无码人妻蜜桃| 国产精品女主播av| 天天干视频在线观看| 国产热re99久久6国产精品| 99综合视频| 97精品在线播放| 亚洲色图偷窥自拍| 91综合精品国产丝袜长腿久久| 精品少妇无遮挡毛片| 亚洲成人手机在线| 久久精品视频免费看|