@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请求参数。