1. 程式人生 > >Java Web程式設計------HTTP協議

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;伺服器端出現錯誤。