400-638-8808
|
微信公眾號




穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無阻

協(xié)同辦公 資源管理

超大郵件 超級功能

智能反垃圾郵件技術(shù)
易管理 免維護

經(jīng)常看到HTTP客戶端與服務器端交互原理的各種版本的文章,但是專業(yè)術(shù)語太多,且流程過于復雜,不容易消化。于是就按照在 Servlet 里面的內(nèi)容大致做了一些穿插。本來連 Tomcat 容器 和 Servlet 的生命周期也準備在這里一起寫的,但怕過于龐大,于是就簡單的引用了一些 Servlet 對象。這樣的一個整個流程看下來,相信至少在理解 HTTP協(xié)議和 request 和 response 是如何完成從請求到生成響應結(jié)果回發(fā)的。在后續(xù)的一些文章里會專門講一講 Tomcat 和 Servlet 是如何處理請求和完成響應的,更多的是說明Servlet 的生命周期。
HTTP介紹
1.HTTP是一種超文本傳送協(xié)議(HyperText Transfer Protocol),是一套計算機在網(wǎng)絡中通信的一種規(guī)則。在TCP/IP體系結(jié)構(gòu)中,HTTP屬于應用層協(xié)議,位于TCP/IP協(xié)議的頂層。
2.HTTP是一種無狀態(tài)的協(xié)議,意思是指在Web 瀏覽器(客戶端)和 Web 服務器之間不需要建立持久的連接。整個過程就是當一個客戶端向服務器端發(fā)送一個請求(request),然后Web服務器返回一個響應(response),之后連接就關閉了,在服務端此時是沒有保留連接的信息。
3.HTTP 遵循請求/響應(request/response)模型的,所有的通信交互都被構(gòu)造在一套請求和響應模型中。
4.瀏覽Web時,瀏覽器通過HTTP協(xié)議與Web服務器交換信息,Web服務器向Web瀏覽器返回的文件都有與之相關的類型,這些信息類型的格式由MIME定義。
HTTP定義的事務處理由以下四步組成:
1.建立連接。
2.客戶端發(fā)送HTTP請求頭。
3.服務器端響應生成結(jié)果回發(fā)。
4.服務器端關閉連接,客戶端解析回發(fā)響應頭,恢復頁面。
1.建立連接:以下用我的另一篇文章的地址做為例子
Servlet容器(Tomacat)介紹及配置
客戶端,也就是我請求一個地址時,即打開了到 Web 服務器的HTTP端口的一個套接字。因為在網(wǎng)絡中間作為傳遞數(shù)據(jù)的實體介質(zhì)就是網(wǎng)線,數(shù)據(jù)實質(zhì)上是通過IO流進行輸出和輸入,這就不難理解我們?yōu)槭裁丛趯懸粋Servlet的時候要引用 import java.io.*; 的原因,包括我們在向客戶端回發(fā)結(jié)果的時候要用到 PrintWriter 對象的println()方法。
比如我在這里請求CSDN社區(qū)的一個地址
實際上首先要請求這個地址,以及一個端口80(8080)http://blog.csdn.net:80 80可以不寫,是因為瀏覽器網(wǎng)頁服務默認的端口號是 80.
在Java底層代碼中是這樣實現(xiàn)的,只不過它們已經(jīng)幫我們做了。
2.客戶端發(fā)送HTTP請求頭
一旦建立了TCP連接,Web瀏覽器就會向Web服務器發(fā)送請求命令,是一個ASCII文本請求行,后跟0個或多個HTTP頭標,一個空行和實現(xiàn)請求的任意數(shù)據(jù)。四個部分:請求行,請求頭標,空行和請求數(shù)據(jù)。
1)請求行由三個標記組成:請求方法 請求URL HTTP版本,中間用空格分開
HTTP規(guī)范定義了8種可能的請求方法:(最常見的就是 GET 和 POST 兩種方法)
GET 檢索URI中標識資源的一個簡單請求
HEAD 與GET方法相同,服務器只返回狀態(tài)行和頭標,并不返回請求文檔
POST 服務器接受被寫入客戶端輸出流中的數(shù)據(jù)的請求
PUT 服務器保存請求數(shù)據(jù)作為指定URI新內(nèi)容的請求
DELETE 服務器刪除URI中命名的資源的請求
OPTIONS 關于服務器支持的請求方法信息的請求
TRACE Web服務器反饋Http請求和其頭標的請求
CONNECT 已文檔化但當前未實現(xiàn)的一個方法,預留做隧道處理
2)請求頭標:由key :value 鍵值組成,每行一對。請求頭標通知服務器有關客戶端的功能和標識。
HOST 請求的哪一個服務器端地址,主地址 ,比如 我現(xiàn)在所在的CSDN blog.csdn.net/
User-Agent 用戶即客戶端可以使用的瀏覽器 ,如 : Mozilla/4.0
Accept 即客戶端可以接受的MIME 類型列表,如image/gif text/html, application/msword
Content-Length 只適用于POST請求,以字節(jié)給出POST數(shù)據(jù)的尺寸
3)空行 發(fā)送回車符和退行,通知服務器以下不再有頭標。
4)請求數(shù)據(jù):使用POST傳送數(shù)據(jù),最常使用的是Content-Type和Content-Length頭標。
總結(jié)以上 我們可以這樣寫出一個標準的 HTTP請求
這個頁面用的是 HTTP1.1 規(guī)范 我的瀏覽器版本是Mozilla/4.0
可以支持的MIME格式為 image/gif,text/html,application/pdf,image/png...等等
這個MIME格式我們response.setContentType("text/html;charset=gb2312");或者在一個 或者總能見到
那么在這里如何理解 GET 和 POST 最直觀的區(qū)別,最明顯的就是 GET方法將數(shù)據(jù)的請求跟在了所請求的URL后面,也就是在請求行里面我們是這么樣來做的:
也實際上就是 用 GET 如此傳遞數(shù)據(jù) :
3.服務器端接受請求,處理數(shù)據(jù)后生成響應返回數(shù)據(jù)到客戶端 (部分Servlet 內(nèi)容穿插)
Web 服務器 解析請求,定位指定的資源
1)根據(jù)在 請求時的 GET/POST 來按照響應的 doGet() /doPost()方法來處理(有可能是一些業(yè)務邏輯,也有可能是一些驗證等等,也有可能是一些數(shù)據(jù)查詢,提交等等)其有效的數(shù)據(jù)就來源于name=simon&password=simonlv,還有其它的一些封裝在 request 對象中的數(shù)據(jù)資源。
2)處理請求之后,由 respons
上一篇 :ajax訪問服務器通過同步還是異步
下一篇 :raid技術(shù)
產(chǎn)品與服務
香港服務器 香港高防服務器 美國服務器 韓國服務器 新加坡服務器 日本服務器 臺灣服務器云服務器
香港云主機 美國云主機 韓國云主機 新加坡云主機 臺灣云主機 日本云主機 德國云主機 全球云主機高防專線
海外高防IP 海外無限防御 SSL證書 高防CDN套餐 全球節(jié)點定制 全球?qū)>GPLC關于我們
關于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團隊建設 加入天下數(shù)據(jù) 媒體報道 榮譽資質(zhì) 付款方式關注我們
微信公眾賬號
新浪微博
天下數(shù)據(jù)手機站 關于天下數(shù)據(jù) 聯(lián)系我們 誠聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務器、美國服務器、海外云主機、海外vps主機租用托管以及服務器解決方案-做天下最好的IDC服務商
《中華人民共和國增值電信業(yè)務經(jīng)營許可證》 ISP證:粵ICP備07026347號
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運營)聯(lián)合版權(quán)
深圳總部:中國.深圳市南山區(qū)深圳國際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號建安商業(yè)大廈7樓
7×24小時服務熱線:4006388808香港服務電話:+852 67031102
本網(wǎng)站的域名注冊業(yè)務代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品