您的位置:首页 > 运维架构 > Tomcat

使用struts2+spring+tomcat+mysql数据库开发中文乱码解决

2011-03-31 23:20 113 查看
第一次使用mysql结合struts2和spring开发,接二连三碰到中文乱码和数据库查询异常问题,非常麻烦。

理想下整个过程全部使用utf-8,中间不用转换编码。

首先,mysql数据库字符集全部设成utf-8,没有问题。

然后,struts.xml配置文件中加入

<constant name="struts.i18n.encoding" value="UTF-8"></constant>


jsp页面加入

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">


spring数据源配置(注意url)

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bysj?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</bean>


一开始我url后面没有加编码,导致出现了一个诡异的问题:使用spring的jdbctemplate执行不带中文的sql语句没有问题,执行带中文的sql语句查不到数据,而将这条sql语句直接在数据库中执行却也完全没问题。

另外保险起见在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>


最后tomcat中server.xml也要配置(URIEncoding="UTF-8"是添加上去的)。

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>


搞定!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: