046_SSM——@ReposeBody标签其什么作用?为什么要和注解驱动一块使用?

一般服务器向浏览器返回json字符串是,和普通的字符串返回的格式是不一样的。
respose.setContentype("application/json;charset=utf-8")
respose.setContentype("html/text;charset=utf-8")
===============================================================

当返回值是对象时

框架处理返回一个Student对象,使用的MappingJackson2HttpMessageConverter这个类。
内部使用jackson的ObjectMapper,把student转为json。
在使用@ResponseBody输出到浏览器。 默认的ContextType:"application/json;charset=UTF-8"
================================================================

当返回值是字符串是,注意编码格式

当返回值是String时,如果有@resposBody注解就是字符串,没有就是view视图路径。
但是会有乱码的情况,因为这里面会使用消息解析器的 StringHttpMessageConverter,
默认编码方式是iso-8859-1,我们需要在 @RequestMapping(produces = "text/plain;charset=utf-8")设置相应编码

==================================================================

为什么要使用注解驱动?

我们的@RTeposeBody注解只是负责将我们的json字符串响应到浏览器,但是注解就不一样了,

注解驱动里面有一个消息转换器接口,他有七个实现类,是专门负责进行数据转换的,我们上面的MappingJackson2HttpMessageConverter

与 StringHttpMessageConverter都是他的实现类。

简单来说就是@ResposBody管理的是相应请求,但是注解驱动管理的就是消息转换。

=================================================================

原文地址:https://www.cnblogs.com/pogusanqian/p/12427146.html