doGet()和doPost()的區(qū)別(轉(zhuǎn))
service()是在javax.servlet.Servlet接口中定義的, 在 javax.servlet.GenericServlet 中實現(xiàn)了這個接口, 而 doGet/doPost 則是在 javax.servlet.http.HttpServlet 中實現(xiàn)的, javax.servlet.http.HttpServlet 是 javax.servlet.GenericServlet 的子類. 所有可以這樣理解, 其實所有的請求均首先由 service() 進(jìn)行處理, 而在 javax.servlet.http.HttpServlet 的 service() 方法中, 主要做的事情就是判斷請求類型是 Get 還是 Post, 然后調(diào)用對應(yīng)的 doGet/doPost 執(zhí)行.
doGet:處理GET請求 doPost:處理POST請求 doPut:處理PUT請求 doDelete:處理DELETE請求 doHead:處理HEAD請求 doOptions:處理OPTIONS請求 doTrace:處理TRACE請求 通常情況下,在開發(fā)基于HTTP的servlet時,開發(fā)者只需要關(guān)心doGet和doPost方法,其它的方法需要開發(fā)者非常的熟悉HTTP編程,因此這些方法被認(rèn)為是高級方法。 而通常情況下,我們實現(xiàn)的servlet都是從HttpServlet擴展而來。 doPut和doDelete方法允許開發(fā)者支持HTTP/1.1的對應(yīng)特性; doHead是一個已經(jīng)實現(xiàn)的方法,它將執(zhí)行doGet但是僅僅向客戶端返回doGet應(yīng)該向客戶端返回的頭部的內(nèi)容; doOptions方法自動的返回servlet所直接支持的HTTP方法信息; doTrace方法返回TRACE請求中的所有頭部信息。 對于那些僅僅支持HTTP/1.0的容器而言,只有doGet, doHead 和 doPost方法被使用,因為HTTP/1.
下邊是CSDN里邊的一些討論:
1.doGet和doPost的區(qū)別,在什么時候調(diào)用,為什么有時doPost中套用doGet
2.提交的form method=Post就執(zhí)行DOPOST,否則執(zhí)行GOGET 套用是不管method是post還是get都執(zhí)行dopost方法
3.get:你可以通過URL傳參數(shù)。http://www.csdn.net/index.asp?user=1234 , Post不行
4.你的表單提交都有方法的,如果提交為get就調(diào)用get方法,用post就調(diào)用post方法.
get顯示你傳過去的參數(shù),post則不顯示.
5.通常的寫法:先用doGet(),然后在doPost()中調(diào)用doGet(),這樣就萬無一失了
6. 簡單的說,get是通過http header來傳輸數(shù)據(jù),有數(shù)量限制,而post則是通過http body來傳輸數(shù)據(jù),沒有數(shù)量限制。
7.還有一點:get和post提交的數(shù)據(jù)量是不一樣的.
get好像最多只能在url后跟64K(?具體多少忘記了),
post好像沒這個限制,至少我post過5M以上的文本
還有url刷新時get好像可以不用重復(fù)提交原來提交的數(shù)據(jù),
而post則會說內(nèi)容已提交,想刷新請再提交.