SpringMvc中返回Json数据的原理分析

为什么直接添加一个注解就能够返回JSon数据了呢?这个不得不说一下HttpMessageConverter。

HttpMessageConverter<T> 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息


加入 jackson jar 包后, RequestMappingHandlerAdapter会自动装配上MappingJackson2HttpMessageConverter,随后就可以对数据进行Json格式的包装。

那么HttpMessageConverter具体的用法还有哪些呢?

使用 HttpMessageConverter<T> 将请求信息转化并绑定到处理方法的入参中或将响应结果转为对应类型的响应信息,Spring 提供了两种途径:
– 使用 @RequestBody / @ResponseBody 对处理方法进行标注
– 使用 HttpEntity<T> / ResponseEntity<T> 作为处理方法的入参或返回值
• 当控制器处理方法使用到 @RequestBody/@ResponseBody 或HttpEntity<T>/ResponseEntity<T> 时, Spring 首先根据请求头或响应头的Accept 属性选择匹配的HttpMessageConverter, 进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter, 若找不到可用的HttpMessageConverter 将报错
• @RequestBody 和 @ResponseBody 不需要成对出现

ex:输入一个文件,返回一串字符串:

<form action="testHttpMessageConverter" method="post" enctype="multipart/form-data">

  File:<input type="file" name="file">
  Desc:<input type="text" name="desc">
  <input type="submit" value="Submit">
</form>
 @ResponseBody
    @RequestMapping("/testHttpMessageConverter")
    public String testHttpMessageConvert(@RequestBody String body){
        System.out.println(body);
        return "helloworld"+new Date();//直接打印字符串
    }



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值