servlet get post 方法區別

get和post這是http協議的兩種方法,另外還有head,  delete等  
這兩種方法有本質的區別,get只有一個流,參數附加在url後,大小個數有嚴格限制且只能是字符串。post的參數是通過另外的流傳遞的,不通過url,所以可以很大,也可以傳遞二進制數據,如文件的上傳。  
在servlet開發中,以doGet()和doPost()分別處理get和post方法。  
另外還有一個doService(),  它是一個調度方法,當一個請求發生時,首先執行doService(),不管是get還是post。在HttpServlet這個基類中實現了一個角度,首先判斷是請求時get還是post,如果是get就調用doGet(),  如果是post就調用doPost()。你也可以直接過載doService()方法,這樣你可以不管是get還是post。都會執行這個方法。  
---------------------------------------------------------------  
 
1.通過表單提交到的servlet,看form的method是get還是post  
2.通過鏈接訪問的servlet,doGet  
3.直接在ie地址欄中鍵入的servlet地址,doGet  
 
一般只要實現一個doGet,再另外一個doPost裏面調用doGet(resq,resp),resq和resd是doPost的參數.  
---------------------------------------------------------------  
 
可以互相調用.  
doGet()  和doPost()方法,前者處理你表單提交來的method=get的請求,後者處理method=post  的請求  

GET和POST的本質區別是什麼?

        使用GET,form中的數據將編碼到url中,而使用POST的form中的數據則在http協議的header中傳輸。在使用上,當且僅當請求冪等(字面意思是請求任意次返回同樣的結果,本質是請求本身不會改變服務器數據和狀態)時使用GET,當請求會改變服務器數據或狀態時(更新數據,上傳文件),應該使用POST。
區別使用GET,POST意義何在?
       重複訪問使用GET方法請求的頁面,瀏覽器會使用緩存處理後續請求。使用POST方法的form提交時,瀏覽器基於POST將產生永久改變的假設,將讓用戶進行提交確認。當編成人員正確的使用GET,POST後,瀏覽器會給出很好的緩存配合,時響應速度更快。
在form提交階段的差別
         form提交的第一步是創建數據集,並根據ENCTYPE對數據集進行編碼。ENCTYPE有兩個值:multipart/form-data,application/x-www-form-urlencoded(默認值),前者可同時用於GET,POST,後者只用於POST。然後進行數據傳輸--對於GET方法,數據集使用content type application/x-www-form-urlencoded編碼並附在url後面,在這種模式下,數據嚴格限制爲ASCII碼;對於POST,使用content type編碼字符集並將其構造成消息發送。
在服務器處理部分的差別
        原則上,除理GET和POST請求是沒有分別的。但由於數據通過不同的方法編碼,需要有不同的解碼機制。所以,方法變化將導致處理請求的代碼變化。比如對於cgi,處理GET時通過環境變量獲得參數,處理POST請求時則通過標準輸入(stdin) 獲得數據。

從使用經驗,我們有如下總結:
1、get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
2、對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。兩種方式的參數都可以用Request來獲得。
3、get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5中爲100KB。
4、get安全性非常低,post安全性較高。
5、<form method="get" action="a.asp?b=b">跟<form method="get" action="a.asp">是一樣的,也就是說,action頁面後邊帶的參數列表會被忽視;而<form method="post" action="a.asp?b=b">跟<form method="post" action="a.asp">是不一樣的。


另外

Get請求有如下特性:它會將數據添加到URL中,通過這種方式傳遞到服務器,通常利用一個問號?代表URL地址的結尾與數據參數的開端,後面的參數每一個數據參數以“名稱=值”的形式出現,參數與參數之間利用一個連接符&來區分。
Post請求有如下特性:數據是放在HTTP主體中的,其組織方式不只一種,有&連接方式,也有分割符方式,可隱藏參數,傳遞大批數據,比較方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章