@RequestBody
处理HttpEntity传递过来的数据,用来处理请求头Content-Type: 为 application/json编码的内容,明确的告诉服务器发送的内容是json。因为需要读取body中内容,所以只能接受post请求。@RequestParam
用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型),RequestParam可以接受简单类型的属性,也可以接受对象类型。 实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段。
GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。
POST请求中,在http body中传递的参数为key=value表单形式,则可用@RequestParam进行解析;若传递的参数为JSON形式,则使用@RequestBody注解进行解析。