spring mvc@Responsebody注解 对返回json格式数据的支持

Springmvc 只需要在Controller中的方法中加上@Responsebody注解就可以,使该方法返回的对象为,json对象于是很好奇为什么加上这个注解返回的就是json,不加返回的就是字符串对象

众所周知,我们在springmvc的配置文件中都会有mvc:annotation-driven //启动springmvc的注解驱动就是注解驱动启动的时候,springmvc会自动的初始化7个数据转换器,spring3.0之前需要自己手动注入转换器

- ByteArrayHttpMessageConverter    //二级制数据转换器(写入/写出)

-StringHttpMessageConverter //字符串数据转换器(写入/写出)

-ResourceHttpMessageConverter //资源文件数据转换器(写入/写出)

-FormHttpMessageConverter //表单数据转换器(能读取的数据格式为 application/x-www-form-urlencoded,不能读取多媒体表单数据(multipart/form-data),负责写入application/x-www-form-urlencoded和multipart/form-data格式的数据)

-MappingJacksonHttpMessageConverter // json数据转换器   负责读取和写入json格式的数据

-SourceHttpMessageConverter //xml数据转换器

负责读取和写入 xml 中javax.xml.transform.Source定义的数据;

Jaxb2RootElementHttpMessageConverter: //xml数据转换器 负责读取和写入xml 标签格式的数据;

例如:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
        <property name="messageConverters" >
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
                    <!--定义为json格式-->
                    <property name="supportedMediaTypes" >
                        <list>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </list>
        </property>
    </bean>

这些转换器都实现了HttpMessageConverter<T>这个接口,此接口中有两个方法canRead和canWrite分别对应着Controller层的@ResquestBody和@ResponseBody这两个注解。

读取到@ResquestBody 时canRead返回的true,会按照相应类型,去转换前端传过来的参数

读取到@ResponseBody时canWrite返回的true,会按照相应类型,去转换后台传给前台的数据格式。

Springmvc默认返回的就是json格式的数据。

一般项目中,MappingJacksonHttpMessageConverter转换器,设计人员都会采用将消息转换器中的objectMapper换成自定义的,用于对数据展示的控制和对所传数据中某些类型数据的加工处理,例如将时间格式化。

猜你喜欢

转载自blog.csdn.net/m0_55868614/article/details/121112112