doGet/doPost 的區別

http協議的格式主要有3中,get、post、head。。。head一般不用再servlet中,get和post都可以用於數據傳遞,都可以把數據傳給服務器,不同的是,
他們的數據在http包中的位置不同,一般,get方法的數據放在頭部,直接在url裏面給出,而post在專門的數據區,因此post能傳遞大量的數據,一般在表單中可以選擇post或者get方法,用url直接傳參默認使用

實際上還有一個service方法,綜合了上面兩個,直接用這個是最好的了。。

service()是在javax.servlet.Servlet接口中定義的, 在 javax.servlet.GenericServlet 中實現了這個接口, 而 doGet/doPost 則是在 javax.servlet.http.HttpServlet 中實現的, javax.servlet.http.HttpServlet 是 javax.servlet.GenericServlet 的子類. 所有可以這樣理解, 其實所有的請求均首先由 service() 進行處理, 而在 javax.servlet.http.HttpServlet 的 service() 方法中, 主要做的事情就是判斷請求類型是 Get 還是 Post, 然後調用對應的 doGet/doPost 執行.

doGet:處理GET請求

doPost:處理POST請求

doPut:處理PUT請求

doDelete:處理DELETE請求

doHead:處理HEAD請求

doOptions:處理OPTIONS請求

doTrace:處理TRACE請求

 

通常情況下,在開發基於HTTP的servlet時,開發者只需要關心doGet和doPost方法,其它的方法需要開發者非常的熟悉HTTP編程,因此這些方法被認爲是高級方法。

 

而通常情況下,我們實現的servlet都是從HttpServlet擴展而來。
doPut和doDelete方法允許開發者支持HTTP/1.1的對應特性;
doHead是一個已經實現的方法,它將執行doGet但是僅僅向客戶端返回doGet應該向客戶端返回的頭部內容;
doOptions方法自動的返回servlet所直接支持的HTTP方法信息;
doTrace方法返回TRACE請求中的所有頭部信息。

 

GET vs POST

1、安全

GET調用在URL裏顯示正傳送給SERVLET的數據,這在系統的安全方面可能帶來問題,例如用戶名和密碼等

POST就可以在一定程度上解決此類問題

 

2、服務器接收方式

服務器隨機接受GET方法的數據,一旦斷電等原因,服務器也不知道信息是否發送完畢

而POST方法,服務器先接受數據信息的長度,然後再接受數據

 

3、form運行方式

當form框裏面的method爲get時,執行doGet方法 
當form框裏面的method爲post時,執行doPost方法

 

4、容量限制

GET方法後面的信息量字節大小不要超過1.3K

POST則沒有限制

5、請求格式差異

1)get的請求格式
GET /test/LoginServlet?username=hello&password=world HTTP/1.1
2) post的請求格式
POST /test/LoginServlet
...
Connection: Keep-alive
username=hello&password=world


發佈了51 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章