GET 和 POST 請求的區別

來源:互聯網
上載者:User

關於你上次提到的問題:
// --TCP/IP 協議詳解卷3
13.3.1 報文類型:請求與響應
HTTP / 1 . 0報文有兩種類型:請求和響應。HTTP / 1 . 0請求的格式是:
reqe t - l i n e
headers ( 0或有多個)
<blank line>
body (只對POST請求有效)

request - l i n e的格式是:
request request-URI HTTP版本號碼

支援以下三種請求:
1) G E T請求,返回re q u e s t - U R I所指出的任意資訊。
2) H E A D請求,類似於G E T請求,但伺服器程式只返回指定文檔的首部資訊,而不包含實際的文檔內容。該請求通常被用來測試超文本連結的正確性、可訪問性和最近的修改。
3) P O S T請求用來寄送電子郵件、新聞或發送能由互動使用者填寫的表格。這是唯一需要在請求中發送b o d y的請求。使用P O S T請求時需要在報文首部C o n t e n t - L e n g t h欄位中
指出b o d y的長度。
// --TCP/IP 協議詳解卷3

明白?get 請求表示用戶端請求一個uri,伺服器返回用戶端請求的uri,post請求表示用戶端請求的時候還要提交資料,比喻提交form表單,要提交的資料會放到請求報文的body部分。伺服器收到後這樣的請求後通常需要來處理這些資料。
應聘j2ee開發時問這個問題說明提問著的重點是伺服器對這兩種請求的處理有什麼不同,而不是這兩種請求的報文有什麼不同。當然作為一個jsp servlet的開發人員一般你是不會感覺到著兩種請求有什麼不同的,因為web伺服器已經對這些請求進行處理了,web伺服器調用相應的 jsp/servlet來響應用戶端請求的時候,對於post的請求,web伺服器已經把用戶端提交的資料取出來,添到request對象中去了。不過,對於get、post的請求servlet 的 doGet、 doPost方法會被響應調用。也就是說如果用戶端送來的是一個get的請求,那麼你寫到servlet中的dopost()方法中的代碼是不會執行的,反之如果是post的請求,寫在doget()中代碼是不會被調用的(對於所有方式的請求,寫在doservice的代碼是會被調用的,因為在HttpServlet類中doGet doPost的請求都是由doService來分發的,具體的看關於servlet的生命週期介紹)。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.