文档章节

@ResponseBody的配置

lixuelong
 lixuelong
发布于 2016/04/19 22:31
字数 499
阅读 84
收藏 2

最近搭建环境时,想使用@ResponseBody注解返回JSONObject数据,但是提示Http 500错误:

上网查了一下,才发现,@ResponseBody不是拿来就能用的,还需要进行下配置,配置对应的conver。

找了好一会,终于搞定,但是感觉好多朋友的博文基本都是转载,一个错就导致了个个错,所以决定自己整理一份

 

下面先说Jackson的方式

  • 添加jar包支持

    我的项目是Maven项目,所以pom.xml文件中添加依赖如下:

<!-- Jackson依赖 -->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-core</artifactId>
	<version>2.7.3</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.7.3</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-annotations</artifactId>
	<version>2.7.3</version>
</dependency
  • 配置SpringMVC的配置文件

    这里要注意SpringMVC和Jackson的版本,有部分老版本会使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter和org.springframework.http.converter.json.MappingJackson2HttpMessageConverter的配置。

    我这里使用的是4.2的SpringMVC和2.7的Jackson

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
	<property name="messageConverters">
		<list >
			<ref bean="mappingJacksonHttpMessageConverter" />
		</list>
	</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
	<property name="supportedMediaTypes">
		<list>
			<value>text/html;charset=UTF-8</value>
		</list>
	</property>
</bean>

<!-- 注解驱动配置 -->
<mvc:annotation-driven />
  • 接下来,就可以使用@ResponseBody进行一下测试了

 

接下来再说下使用FastJson的情况下怎么配置

  • 添加jar包支持

<!-- FastJson -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.8</version>
</dependency>
  • 修改SpringMVC配置文件

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
	<property name="messageConverters">
		<list >
			<ref bean="mappingJacksonHttpMessageConverter" />
		</list>
	</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
	<property name="supportedMediaTypes">
		<list>
			<value>text/html;charset=UTF-8</value>
		</list>
	</property>
</bean>
  • OK,大功告成,测试一下,没问题就继续前进之路吧。

或者是下面这种形式

<!-- 注解驱动配置 -->
<mvc:annotation-driven>
    <mvc:message-converters register-defaults="false">
      <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
         <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <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>

 

其实Jackson和Fastjson的配置大同小异,只是使用的不同的conver文件而已
 

© 著作权归作者所有

lixuelong
粉丝 7
博文 18
码字总数 9869
作品 0
朝阳
个人站长
私信 提问
Spring mvc中@Requestmapping参数配置

原文标题[ Spring mvc中@Requestmapping再探] 1) 普通path路径 @RequestMapping(value = "/foos") @ResponseBody public String getFoosBySimplePath() { return "Get some Foos"; } 然后尝试......

guhai2004
2013/10/20
0
0
SpringMVC 返回中文字符串时乱码

SpringMVC的@ResponseBody注解可以将请求方法返回的对象直接转换成JSON对象,但是当返回值是String的时候,中文会乱码,原因是因为其中字符串转换和对象转换用的是两个转换器,而String的转换...

费氏家族
2017/10/30
0
0
Spring MVC返回json视图时,如何将对象直接序列化成不带变量名做为根节点

Spring MVC返回json视图时,如何将对象直接序列化成不带变量名做为根节点的 json 报文 问题 问题描述起来比较拗口,其实就是用Spring MVC时,如何将对象映射成 json 报文时不把对象作为json的...

Tek_Eternal
2015/03/01
0
1
SpringMVC之@RequestBody,@ResponseBody,@RequestParam用法

1.@RequestBody,@ResponseBody 在使用@RequestBody和@ResponseBody之前需要先配置,一般是JSON数据和实体对象之间的转化,springMVC.xml配置文件需要如下配置: Server端:...

满小茂
2016/09/22
235
0
@Controller和@RestController的区别

官方文档: @RestController is a stereotype annotation that combines @ResponseBody and @Controller. 意思是: @RestController注解相当于@ResponseBody + @Controller合在一起的作用。......

mifans
2016/11/01
27
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
3
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
4
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部