@RequestParamhtml
用來處理Content-Type: 爲 application/x-www-form-urlencoded 編碼的內容。(Http協議中,若是不指定Content-Type,則默認傳遞的參數就是application/x-www-form-urlencoded類型)json
RequestParam能夠接受簡單類型的屬性,也能夠接受對象類型 實質是將Request.getParameter()中的Key-Value參數Map利用Spring的轉化機制ConversionService配置,轉化成參數接收對象或字段。app
tippost
在Content-Type: application/x-www-form-urlencoded的請求中, get 方式中queryString的值,和post方式中 body data的值都會被Servlet接受到並轉化到 Request.getParameter()參數集中,因此@RequestParam能夠獲取的到。編碼
@RequestBodyurl
處理HttpEntity傳遞過來的數據,通常用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數據。code
總結orm
舉個例子,在SpringMVC配置了HttpMessageConverter處理棧中,指定json轉化的格式,如Date轉成'yyyy-MM-dd',則參數接收對象包含的字段若是是Date類型,就只能讓客戶端傳遞年月日的格式,不能傳時分秒。由於不一樣的接口,它的參數可能對時間參數有不一樣的格式要求,因此這樣作會讓客戶端調用同事對參數的格式有點困惑,因此說擴展性不高。htm
若是使用@RequestParam來接受參數,能夠在接受參數的model中設置@DateFormat指定所須要接受時間參數的格式。對象
另外,使用@RequestBody接受的參數是不會被Servlet轉化統一放在request對象的Param參數集中,@RequestParam是能夠的。
綜上所述,通常狀況下,推薦使用@RequestParam註解來接受Http請求參數。