springMVC中@RequestParam和@RequestBody的作用
@RequestParam和@RequestBody是什么区别,估计很多人还是不太清楚,
因为一般用@ RequestParam就足够传入参数了,要说他们区别,就需要知道contentType是什么?
Content-Type: 默认为 application/x-www-form-urlencoded编码的内容,提交方式可以是GET、POST
1.@RequestParam
GET、POST:一般处理得是Content-Type:
application/x-www-form-urlencoded
multipart/form-data
其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理
PUT:
根据request header Content-Type的值来判断:
application/x-www-form-urlencoded可以;
multipart/form-data, 不能处理;
其他格式可以;
@RequestBody这个一般处理的是在ajax请求中声明contentType: "application/json; charset=utf-8"时候。也就是json数据或者xml
@RequestParam这个一般就是在ajax里面没有声明contentType的时候,为默认的。。。urlencode格式时,用这个
@ReqeustBody:
常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,
好比:application/json或者是application/xml等,常常用来其来处理application/json类型
注意:@requestBody接收的是前端传过来的json字符串,而不是对象
@ResponseBody:
用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端.
注意:不一定只能传递字符串,若有对应的java类,springMVC会自动帮忙转换成符合要求的数据格式(json/xml)