[SpringMVC] HttpMessageConverter配置

本文探讨了在SpringMVC+jQuery环境下,使用@ResponseBody注解返回JSON数据时遇到的问题及解决方案。详细分析了未成功转换为JSON格式的原因,并通过配置HttpMessageConverter实现了正确的数据转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

ssh项目json格式问题

环境

springmvc+jquery

异常现象

  1. 使用ajax获取后端数据
    js文件
    ajax获取数据
  2. 后台使用@ResponseBody注释返回JSON字符串
    controller文件
    后台
  3. 所得结果不是JSON格式
    输出结果
    结果

问题

@ResponseBody没有正确使用,没有成功转为json数据

知识补充

SpringMVC中@ResponseBody与@ResponseBody详解:

http://blog.csdn.net/kobejayandy/article/details/12690555

问题发现

@ResponseBody与@ResponseBody是根据HttpMessageConverter来转换,上面没有使用HttpMessageConverter,所以转换成JSON数据失败

HttpMessageConverter

原理

HttpMessageConverter原理

配置

在springmvc的配置文档里配置

<!-- @ResponseBody、@RequestBody转换的HttpMessageConverter -->
<mvc:annotation-driven>
    <!-- 设置不使用默认的消息转换器 -->
    <mvc:message-converters register-defaults="false">
        <!-- 配置Spring的转换器 -->
        <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
        <!-- 配置fastjson中实现HttpMessageConverter接口的转换器 -->
        <bean id="fastJsonHttpMessageConverter"  class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
            <!-- 加入支持的媒体类型:返回contentType -->
            <property name="supportedMediaTypes">
                <list>
                    <!-- 这里顺序不能反,一定先写text/html,不然ie下会出现下载提示 -->
                    <value>text/html;charset=UTF-8</value>
                    <value>application/json;charset=UTF-8</value>
                </list>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geodoer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值