项目小记:SSM框架遇到的乱码问题
在整合Spring+springmvc+mybatis的时候遇到的乱码坑,做下笔记。
1)在web.xml里面需要配置过滤器
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2)springmvc配置
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
3)返回数据乱码,本地调试的时候,发现前端传输的中文参数并没有乱码,然后我后端做了一个处理,直接将数据return,发现乱码,然后在Controller加了这个本地调试就没事了。
@RequestMapping(value = "login", produces = "application/json; charset=utf-8")
4)Tomcat配置(server.xml)
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
5)数据库插入乱码(在jdbc连接url加上编码限制)
jdbc:mysql://127.0.0.1:3306/myshop?useUnicode=true&useSSL=false&characterEncoding=utf8
6)本地测试没问题,不乱码,放阿里云乱码
原因是maven打包问题,需要加入配置,否则maven按照GBK进行打包,放在云上出现乱码
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>