文档章节

@ResponseBody的配置

lixuelong
 lixuelong
发布于 2016/04/19 22:31
字数 499
阅读 70
收藏 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
粉丝 4
博文 13
码字总数 5890
作品 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
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之@RequestBody,@ResponseBody,@RequestParam用法

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

满小茂
2016/09/22
235
0
Spring mvc responsebody 中文乱码问题

spring mvc在3.0中引入了responsebody这个注解,但是在源码中StringHttpMessageConverter 将默认编码写成了ISO-8859-1,并且是static final的,从网上搜了一堆,通过配置注入来解决,但是都是...

卡布不卡
2014/08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java序列化(四) - 实现Externalnalizable接口

实现Externalnalizable接口 实现Externalnalizable接口 package meng.springboot.demo.obj;import java.io.Externalizable;import java.io.IOException;import java.io.ObjectInput......

晨猫
21分钟前
0
0
php 日志库获取调用方的代码文件地址和代码行数

在使用其他语言的打印日志的时候,经常能看到打印日志时带上文件地址和代码行数,对于调试和查找问题非常方便,但是 php 日志库里则很少见到这个功能,但这个功能还是可以实现的。 关键点就是...

anoty
27分钟前
6
0
Android Studio如何批量导入全部包import

当需要导包时,Android Studio有单个导包快捷键 Alt+Enter 但是没有全部的包 但是可以在设置里设置Auto Import自动导入功能

lanyu96
28分钟前
0
0
六款优秀的 Linux 基准测试工具

基准测试是指运行计算机程序去评估硬件和软件性能的行为。硬件基本测试包括评估处理器,内存,显卡,硬盘,网络等不同组件的性能。基准测试有两类: 复合和应用。复合基准对一个硬件执行压力...

openthings
30分钟前
2
0
什么是阿里云容器服务?

关于阿里云容器服务的详细内容:阿里云容器服务使用教程 容器服务(Container Service)提供高性能可伸缩的容器应用管理服务,支持用 Docker 容器进行应用生命周期管理,提供多种应用发布方式...

mcy0425
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部