在學習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