在學習JavaWeb最初的開始階段,大家都會遇到HttpServlet中的doGet和doPost方法。前兩天看《Head First Servlets & JSP》看到其中講關於Servlet中get請求與post請求的差別,現總結如下:
1:請求資料的大小不同。
因為get請求的資料是要追加到URL中,而URL的資料量一般不能超過2K,所以用get請求的方法對資料的大小有限制。而post請求方法是把資料放在訊息體中,所以理論上對資料量沒有限制。 (但是實際操作中也不能能太大)
2:安全性不一樣
因為get請求的資料是追加在URL中,外部用戶能很方便的看到,從這個角度來講不安全。而post方法因為講請求放在訊息體中,不會直接在URL中顯示所以從這個角度來說資料會比較安全。
3:書籤建立
get請求可以建立書籤;post請求則不能。例如:假設你有一個頁面允許使用者指定搜尋規則。用戶可能一個星期之後才回來,想要得到原來的數據,但此時伺服器上已經有新的數據了。
4:方法的使用
get用於得到某些東西,只是簡單的獲取,不會對伺服器做任何的改變。 post則是使用者傳送資料來處理,可以修改伺服器上的資料。
5:請求是否冪等
get請求是冪等的,它只是要得到一些東西,不會修改伺服器上的內容。它能執行多次,而且不會產生任何不好的副作用。而post不是冪等的,post體中的提交的資料可能用於不可逆轉的交易。所以從這個角度來看的話要慎重使用doPost()功能。
若表單中未指出method=“POST”,就會預設為HTTPGET請求。即預設狀態是呼叫get請求。
在學習JavaWeb最初的開始階段,大家都會遇到HttpServlet中的doGet和doPost方法。
(1)doGet方法:主要是處理Http中的Get請求(2)doPost方法:主要是處理Http中的Post請求
那麼Get請求和Post請求到底有什麼樣的差別
(1)get只有一個流,參數附加在url後,大小個數有嚴格限制且只能是字串例如,http://localhost:8888/javaweb/getServlet?name=123
(2)post的參數是透過另外的流傳遞的,不透過url,所以可以很大,也可以傳遞二進位數據,如檔案的上傳。
什麼時候使用doGet和doPost方法:
1.透過表單提交到的servlet,看form的method是get還是post
2.透過連結<a href…>訪問的servlet,doGet
3.直接在ie網址列鍵入的servlet位址,doGet