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)

猜你喜欢

转载自www.cnblogs.com/zhulina-917/p/10094755.html