1. 程式人生 > >Java程式設計師必須掌握的網站知識 —— HTTP

Java程式設計師必須掌握的網站知識 —— HTTP

介紹

HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文字到本地瀏覽器的傳送協議。

HTTP是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等)。

HTTP是一個屬於應用層的面向物件的協議。

主要特點

1、簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯絡的型別不同。由於HTTP協議簡單,使得HTTP伺服器的程式規模小,因而通訊速度很快。

2、靈活:HTTP允許傳輸任意型別的資料物件。正在傳輸的型別由Content-Type加以標記。

3、無連線:無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。

4、無狀態:HTTP協議是無狀態協議。http協議是無狀態的,同一個客戶端的這次請求和上次請求是沒有對應關係,對http伺服器來說,它並不知道這兩個請求來自同一個客戶端。 為了解決這個問題, Web程式引入了Cookie機制來維護狀態.

5、支援B/S及C/S模式。

小編是一個有著5年工作經驗的java程式設計師,對於java,自己有做資料的整合,一個完整學習java的路線,學習資料和工具,相信這裡有很多學習java的小夥伴,我創立了一個2000人學習扣群,479121291。每晚都有java的直播課程。無論是初級還是進階的小夥伴小編我都歡迎!

HTTP URL

HTTP使用統一資源識別符號(Uniform Resource Identifiers, URI)來傳輸資料和建立連線。URL是一種特殊型別的URI,包含了用於查詢某個資源的足夠的資訊

URL,全稱是UniformResourceLocator, 中文叫統一資源定位符,是網際網路上用來標識某一處資源的地址。

URI vs URL

首先,URI,是統一資源識別符號,用來唯一的標識一個資源。而URL是統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明瞭如何locate這個資源。而URN,統一資源命名,是通過名字來標識資源,比如mailto:

[email protected]。也就是說,URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI;URL是URI的一種。但也不是所有的URI都是URL。

URL 格式http://host['':''port][abs_path]http:表示要通過HTTP協議來定位網路資源;host:表示合法的Internet主機域名或者IP地址;port:指定一個埠號,為空則使用預設埠80;abs_path:指定請求資源的URI;如果URL中沒有給出abs_path,那麼當它作為請求URI時,必須以“/”的形式給出,通常這個工作瀏覽器自動幫我們完成。

請求訊息Request

HTTP請求訊息格式:

請求行(request line)、請求頭部(header)、空行和請求資料四個部分組成。

請求行<Method> <Request-URI> <HTTP-Version> CRLFMethod:表示請求方法URI-Request:表示一個統一資源識別符號HTTP-Version:表示請求的HTTP協議版本CRLF:表示回車和換行(除了作為結尾的CRLF外,不允許出現單獨的CR或LF字元)。

請求方法:根據HTTP標準,HTTP請求可以使用多種請求方法。HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

GET:請求指定的頁面資訊,並返回實體主體。HEAD:類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭POST:向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。PUT:從客戶端向伺服器傳送的資料取代指定的文件的內容。DELETE:請求伺服器刪除指定的頁面。CONNECT:HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。OPTIONS:返回對應URL能訪問的METHODS。TRACE:回顯伺服器收到的請求,主要用於測試或診斷。

請求頭部後文詳述。。。

空行空行,請求頭部後面的空行是必須的

請求資料請求資料也叫主體,可以新增任意的其他資料。

響應訊息Response

HTTP響應也由四個部分組成,分別是:狀態行、訊息報頭、空行和響應正文。

狀態行狀態行,由HTTP協議版本號, 狀態碼, 狀態訊息 三部分組成。『<HTTP-Version> <Status-Code> <Reason-Phrase> CRLF』HTTP-Version:表示伺服器HTTP協議的版本Status-Code:伺服器發回的響應狀態程式碼Reason-Phrase:表示狀態程式碼的文字描述

狀態碼:狀態程式碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:① 1xx:指示資訊--表示請求已接收,繼續處理② 2xx:成功--表示請求已被成功接收、理解、接受③ 3xx:重定向--要完成請求必須進行更進一步的操作④ 4xx:客戶端錯誤--請求有語法錯誤或請求無法實現⑤ 5xx:伺服器端錯誤--伺服器未能實現合法的請求

常見狀態碼:

302 Found  重定向,新的URL會在response中的Location中返回,瀏覽器將會使用新的URL發出新的Request。

304 Not Modified  代表上次的文件已經被快取了, 還可以繼續使用,  例如開啟部落格園首頁, 發現很多 Response 的status code 都是304