Java Web程式設計------HTTP協議
2.2HTTP協議
2.2.1HTTP概述
1.HTTP介紹
HTTP 超文字傳輸協議 hyper text transfer protocol ,它是一種請求/響應式的協議,HTTP的特點
(1)支援客戶端(瀏覽器就是一種web客戶端)/伺服器模式
(2)簡單快速,客戶端向伺服器請求服務時只需傳送請求方式和路徑
http1.0:
http1.1:無需等待結果就可傳送下一個請求 按請求順序依次返回。
2.2.2HTTP請求訊息
一個完整的請求訊息是由請求行+請求頭+實體內容三部分組成。
1.HTTP請求行:
包括三部分 請求方式、資源路徑、所用的HTTP版本
GET/index.html HTTP/1.1
GET
POST 向指定資源提交資料,請求伺服器進行處想(例如提交表單或者上傳檔案)
OPTIONS
HEADPUT
DELETE
RACE
CONNECT 請求查詢伺服器的效能或者查詢與資源相關的選項和需求
(1)GET方式 裸奔
當用戶在瀏覽器位址列中直接輸入某個URL地址或者單擊網頁上的一個超連結時,瀏覽器將使用GET方式傳送請求。如果將網頁上的form表單的method屬性設定為“GET” 或者不設定method屬性(預設值是GET),當用戶提交表單時,瀏覽器也將使用GET方式傳送請求。
如果瀏覽器請求的URL中有引數部分,在瀏覽器生成的請求訊息中,引數部分將附加在請求行中的資源路徑後面。先來看一個URL地址,具體如下。
http://www . itcast .cn/javaForum?name=lee&psd-hnxy
當瀏覽器向伺服器傳送請求訊息時,上述URL中的引數部分會附加在要訪問的URI資源後面,具體如下所示。
GET/javaorum?name=lee&psd=hnxy HTTP/1.1
需要注意的是,使用GET方式傳送的資料量有限,最多不能超過2KB
2)POST方式(長度無限制,更安全)隱藏在實體中。
如果網頁上om表單的mtd屬性設定為POST當用戶提交表單時,瀏流器將使用POST方式提交表單內容,並把各個表單元素及資料作為HTTP訊息的實體內容傳送給伺服器,而不是作為UR地址的引數傳速
POST /javaForum HTTP/1.1 協認版本
Host: www.itcast.cn 主機名
Content-Type: application/x-www- form-urlencoded
Content-Length: 17
name=lee&psd=hnxy
- POST傳輸資料大小無限制
由於GET請求方式是通過請求引數傳遞資料的,因此最多可傳適方式是通過實體內容傳遞資料的,因此可以傳遞資料的大小沒有限
- POST比GET請求方式更安全
由於GET請求方式的引數資訊都會在URL位址列明文顯示,而隱藏在實體內容中,使用者是看不到的,因此,POST比GET請求方式
2. HTTP請求訊息頭
在HTTP請求訊息中,請求行之後便是若干請求訊息頭。請求消遞附加訊息,例如(客戶端可以接收的資料型別、壓縮方法、語言以8I面的URL地址等資訊)
(1)Accpet 用於指出客戶端程式能夠處理的MIME型別
(2)Accpet-Enconding 指出客戶端能夠進行解碼的編碼方式
(3)Host 指出資源所在的主機名和埠號
2.2.3HTTP響應訊息
當伺服器收到瀏覽器的請求後,會回送響應訊息給客戶端。一個完整的響應訊息以應包括響應狀態行、響應訊息頭和實體內容
1. HTTP響應狀態行
HTP響成狀態行於響應訊息的第1行它包括3個部分,分別是http版本、表示成功或失敗的三位整數程式碼(狀態碼)、對狀態碼描述的文字資訊,具體示例如下,
HTTP/1.1 200 OK
上面的示例就是一一個HTTP響應訊息的狀態行,其中HTP 1.1是通訊使用的協議後本200是狀態碼),OK是狀態描述,說明客戶端請求成功。需要注意的是,請求行中的每個部分需要用空格分隔,最後要以回車換行結束。
狀態程式碼由 3位數字組成,表示請求是否被理解或被滿足。HTTP響應狀態碼的第1個數字定義了響應的類別,後面兩位沒有具體的分類,第1個數字有5種可能的取值,具體介組如下所示。
- 1xx:表示請求已接收,需要繼續處理。
- 2xx:表示請求已成功被伺服器接收、理解並接受。
- 3xx;為完成請求,客戶端需進一步細化請求。
- 4xx:客戶端的請求有錯誤。
- 5xx;伺服器端出現錯誤。