1. 程式人生 > >java面試題---GET與POSt提交請求的區別

java面試題---GET與POSt提交請求的區別

概要:

一、Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應該有個大概的瞭解了,GET一般用於獲取/查詢資源資訊,而POST一般用於更新資源資訊。

二、根據HTTP規範,POST表示可能修改變伺服器上的資源的請求。繼續引用上面的例子:還是新聞以網站為例,讀者對新聞發表自己的評論應該通過POST實現,因為在評論提交後站點的資源已經不同了,或者說資源被修改了。
上面大概說了一下HTTP規範中GET和POST的一些原理性的問題。但在實際的做的時候,很多人卻沒有按照HTTP規範去做,導致這個問題的原因有很多,

比如說:

1.很多人貪方便,更新資源時用了GET,因為用POST必須要到FORM(表單),這樣會麻煩一點。

2.對資源的增,刪,改,查操作,其實都可以通過GET/POST完成,不需要用到PUT和DELETE。
3.另外一個是,早期的Web MVC框架設計者們並沒有有意識地將URL當作抽象的資源來看待和設計,所以導致一個比較嚴重的問題是傳統的Web MVC框架基本上都只支       持GET和POST兩種HTTP方法,而不支援PUT和DELETE方法。
    * 簡單解釋一下MVC:MVC本來是存在於Desktop程式中的,M是指資料模型,V是指使用者介面,C則是控制器。使用MVC的目的是將M和V的實現程式碼分離,從而使同        一個程式可以使用不同的表現形式。

 區別:
get請求:

①請求引數會顯示在位址列中(如下圖,第一行中)

②請求體是空的
③請求引數顯示在請求首行中(GET /?name=12a HTTP/1.1)


post請求:

①請求引數會不顯示在位址列中

②請求體是請求引數

③ 請求引數不顯示在請求首行中(POST/  HTTP/1.1)


其他區別
             
1 、get請求 請求引數會顯示在位址列中  不安全
       post請求 位址列只顯示請求資源的url 不顯示請求引數 相對安全
2  、get請求 請求引數存放在請求首行中  http對請求首行限制1kb
       post請求  請求引數存放在請求體中  請求體沒有大小限制
 post可以傳送大資料
3、 get請求的引數不能通過request.setCharacterEncoding("gbk")來設定編碼
               request.setCharacterEncoding("gbk")只能設定請求體的編碼集