Spring 3.X系列新注解@ResponseBody,@RequestBody

Spring 3.X系列新注解@ResponseBody@RequestBody 

简介

@RequestBody HTTP请求正文转换为适合的HttpMessageConverter对象。

@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverterAdapter转换对象,写入输出流。

 

@RequestBody

作用: 

    该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;

    再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

使用时机:

A) GETPOST方式提时, 根据request header Content-Type的值来判断:

    application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);

    multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);

    其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

B) PUT方式提交时, 根据request header Content-Type的值来判断:

    application/x-www-form-urlencoded, 必须;

    multipart/form-data, 不能处理;

    其他格式, 必须;

说明:requestbody部分的数据编码格式由header部分的Content-Type指定;

 

@ResponseBody

作用: 

    该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

    GET模式下,这里使用了@PathVariable绑定输入参数,非常适合Restful风格。因为隐藏了参数与路径的关系,可以提升网站的安全性,静态化页面,降低恶意攻击风险。

    POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将JsonXml协议转换成你需要的对象。@ResponseBody可以标注任何对象,由Srping完成对象——协议的转换。

使用时机:

      返回的数据不是html标签的页面,而是其他某种格式的数据时(如jsonxml等)使用;

      @responsebody表示该方法的返回结果直接写入HTTP response body

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值