SpringMVC整合fastjson、easyui 乱码问题

一、框架版本

SpringMVC:3.1.1.RELEASE

fastjson:1.2.7

easyui :1.4.5

二、乱码现象

Action中使用@ResponseBody返回Json数据

1、Action返回的数据正常,无乱码现象

2、使用浏览器的开发者模式查看返回值,发现乱码

可以确定乱码问题出现在数据返回到浏览器的过程中

三、解决过程

1、最常规的方法,添加message-converters,添加后如json-lib库可以解决乱码问题,但是fastjson无法解决(未解决)


1

2

3

4

5

6

7

<mvc:annotation-driven>

         <mvc:message-converters register-defaults="true">

            <bean class="org.springframework.http.converter.StringHttpMessageConverter">

              <property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />

            </bean>

           </mvc:message-converters>

     </mvc:annotation-driven>

2、实现AbstractHttpMessageConverter抽象类(未解决)

http://xyly624.blog.51cto.com/842520/896704

该方法解决了返回乱码问题,但是easyui无法显示数据(有数据但是显示为空,原因不明)


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

public class MappingFastJsonHttpMessageConverter extends

        AbstractHttpMessageConverter<Object> {

    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");

 

    private SerializerFeature[] serializerFeature;

 

    public SerializerFeature[] getSerializerFeature() {

        return serializerFeature;

    }

 

    public void setSerializerFeature(SerializerFeature[] serializerFeature) {

        this.serializerFeature = serializerFeature;

    }

 

    public MappingFastJsonHttpMessageConverter() {

        super(new MediaType("application", "json", DEFAULT_CHARSET));

    }

 

    @Override

    public boolean canRead(Class<?> clazz, MediaType mediaType) {

        return true;

    }

 

    @Override

    public boolean canWrite(Class<?> clazz, MediaType mediaType) {

        return true;

    }

 

    @Override

    protected boolean supports(Class<?> clazz) {

        throw new UnsupportedOperationException();

    }

 

    @Override

    protected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage)

    throws IOException, HttpMessageNotReadableException {

        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        int i;

        while ((i = inputMessage.getBody().read()) != -1) {

            baos.write(i);

        }

        return JSON.parseArray(baos.toString(), clazz);

    }

 

    @Override

    protected void writeInternal(Object o, HttpOutputMessage outputMessage)

    throws IOException, HttpMessageNotWritableException {

        String jsonString = JSON.toJSONString(o, serializerFeature);

        OutputStream out = outputMessage.getBody();

        out.write(jsonString.getBytes(DEFAULT_CHARSET));

        out.flush();

    }

}


1

2

3

4

5

6

7

8

9

10

11

12

13

14

<mvc:annotation-driven>

    <mvc:message-converters register-defaults="true">       

        <!-- fastjosn spring support -->

        <bean id="jsonConverter" class="com.alibaba.fastjson.spring.support.MappingFastJsonHttpMessageConverter">

            <property name="supportedMediaTypes" value="application/json" />

            <property name="serializerFeature">

                <list>

                    <value>WriteMapNullValue</value>

                    <value>QuoteFieldNames</value>

                </list>

            </property>

        </bean>

    </mvc:message-converters>

</mvc:annotation-driven>

3、@RequestMapping添加produces = "text/html;charset=UTF-8",在Controller或Action添加均可(解决问题)

来自为知笔记(Wiz)

时间: 2024-11-06 21:18:17

SpringMVC整合fastjson、easyui 乱码问题的相关文章

SpringMVC 整合fastjson

首先是applicationContext.xml中的相关配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http:/

SpringMVC整合fastjson,解决中文乱码问题

@RequestMapping添加produces = "text/html;charset=UTF-8",在Controller或Action添加均可(解决问题) 原文地址:https://www.cnblogs.com/gjack/p/8672996.html

解决springmvc+mybatis+mysql中文乱码问题【转】

这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文出现乱码 最初在mybatis配置如下 <select id="queryContentById" resultType = "java.lang.String" parameterType="String" >     select t

SpringMVC整合fastjson-1.1.41

以前用fastjson也只是硬编码,就好像这篇博文写的http://blog.csdn.net/jadyer/article/details/24395015 昨天心血来潮突然想和SpringMVC整合,然后利用@ResponseBody注解的方式序列化输出json字符串 下面是研究成果 首先是applicationContext.xml中的相关配置 <?xml version="1.0" encoding="UTF-8"?> <beans xml

springMVC整合jedis+redis

http://www.cnblogs.com/zhengbn/p/4140549.html 前两天写过 springMVC+memcached 的整合,我从这个基础上改造一下,把redis和springmvc整合到一起. 和memcached一样,redis也有java专用的客户端,官网推荐使用的是:jedis. 看了一部分资料,大家推荐使用 spring-data-redis (spring在jedis的基础上又包装了一层),但是实际中感觉写起来有点麻烦,不如原生态的jedis好用. 所以我利

springMVC注解方式+easyUI+MYSQL配置实例

刚接触springMVC,使用的注解方式,也在学习阶段,所以把自己学习到的记下来.本文利用springMVC从数据库读取用户信息为例,分享一下. 1.准备相关架包及资源.因为使用springMVC+easyUI+MYSQL的方式构建项目,所以要下载spring的jar包.easyUI资源.mysql包. 2.新建空项目名称为test,将架包导入项目.即把下载来的spring-framework-3.1.1.RELEASE/libs中的对应jar包复制到项目的/WebRoot/WEB-INF/li

springMVC整合jedis+redis,以注解形式使用

前两天写过 springMVC+memcached 的整合,我从这个基础上改造一下,把redis和springmvc整合到一起. 和memcached一样,redis也有java专用的客户端,官网推荐使用的是:jedis. 看了一部分资料,大家推荐使用 spring-data-redis (spring在jedis的基础上又包装了一层),但是实际中感觉写起来有点麻烦,不如原生态的jedis好用. 所以我利用spring的构造注入做了一个springmvc整合jedis的例子. 先了解下redis

JAVAEE——SpringMVC第一天:介绍、入门程序、架构讲解、SpringMVC整合MyBatis、参数绑定、SpringMVC和Struts2的区别

1. 学习计划   第一天 1.SpringMVC介绍 2.入门程序 3.SpringMVC架构讲解 a) 框架结构 b) 组件说明 4.SpringMVC整合MyBatis 5.参数绑定 a) SpringMVC默认支持的类型 b) 简单数据类型 c) Pojo类型 d) Pojo包装类型 e) 自定义参数绑定 6.SpringMVC和Struts2的区别   第二天 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 2.@RequestMapping注解的使用 3.Con

spring和springMVC整合注解版helloworld

整合的之前需要从官网上下载spring完整的jar包,我下载的是spring-framework-3.2.2.RELEASE.整合步骤如下: 1.在eclipse中新建一个web项目,将下载的spring的jar包拷入lib目录下,但是spring启动的时候依赖一个commons-logging-1.1.jar的jar包,你需要额外的下载. 2.编写web.xml,配置spring的分发器和spring配置文件的位置.具体内容如下: <servlet> <servlet-name>