spring web项目乱码问题的解决

最近又一次做起了web项目,体验和之前在去年做web项目的时候的感觉是完全不一样的,之前都是在别人搭好的框架上做简单的修改,遇到问题的时候也是直接参照别人的东西修改,对为什么要这么修改不是很明白。

这次的web项目从前台到后台都是自己参照网上的教程一步步搭建起来的,后台使用了spring和mybatis,前端整合了requirejs和angularjs。

在项目框架搭建的过程中遇到的乱码问题主要有下面几个:

1.使用jsp:include指令的使用,include进来的文件显示乱码,这个需要在web.xml中配置

    <jsp-config>
        <jsp-property-group>
            <url-pattern>*.html</url-pattern>
            <page-encoding>UTF-8</page-encoding>
        </jsp-property-group>
    </jsp-config>

2.使用spring mvc自带注解responseBody直接向前端返回json字符串包含中文的时候乱码,查找的员也是使用responseBody注解的时候,spring默认是使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter来处理返回的数据的,但是这个类里面使用的编码方式是ISO8859-1,导致返回的json字符串是乱码,后台通过spring的配置修改该类的编码方式,返回前端的是字符串,不是json对象,前端处理起来会比较麻烦,通过查询可以使用

    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes" value="application/json"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

配置fastjson作为responseBody的解码处理方式。

做了以上配置之后,前端post传递的json数据可以直接在controller的参数中通过requestBody注解就能得到JSONObject,使用上也比较方便。