SSH项目前台数据后台存储乱码问题

来源:互联网 发布:cydia添加源网络错误 编辑:程序博客网 时间:2024/06/06 05:44

最近由于学习需要,从网上下载了一个完整的SSH项目来调试作为参考,可是在调试过程中,发现前台JSP页面得到的中文数据,存储在后台MySQL数据库中的时候,一直是乱码,但是从后台拿出数据在前台显示的时候并不会出现乱码的情况,查询一番资料之后调试了以下部分总算解决问题,字符集统一设置为gb2312:

  • 后台MySQL数据库的字符集编码
  • JSP页面编码
  • Struts及过滤器字符集设置
  • Spring配置中链接数据库的URL设置

后台MySQL数据库的字符集编码


修改数据库的字符集编码代码如下:

alter database db_name [[default] CHARACTER SET charset_name] [[DEFAULT] COLLATE collation_name];alter database bookstore character set gb2312;

JSP页面编码


查看JSP文件的开头我们不难发现这样的代码:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><%@taglib prefix="s" uri="/struts-tags"%>

pageEncoding表示这个页面接收到参数以什么字符集来编码,指明了此页面对request里的参数如何编码。


Struts及过滤器字符集设置


在struts.xml文件中添加

<constant name="struts.i18n.encoding" value="gb2312"></constant>

在web.xml文件中添加

<!--字符编码-->  <filter>  <filter-name>CharacterEncodingFilter</filter-name>  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  <init-param>   <param-name>encoding</param-name>   <param-value>gb2312</param-value>  </init-param> </filter> <filter-mapping>  <filter-name>CharacterEncodingFilter</filter-name>  <url-pattern>/*</url-pattern> </filter-mapping>

Spring配置中链接数据库的URL设置


hibernate连接数据库的选项是在applicationContext.xml文件中设定的,需要在连接的URL中指定字符集设置

<bean id="candy" class="org.apache.commons.dbcp.BasicDataSource">        <property name="driverClassName"            value="com.mysql.jdbc.Driver">        </property>        <property name="url"            value="jdbc:mysql://localhost:3306/bookstore? useUnicode=true&amp;characterEncoding=gb2312">        </property>        <property name="username" value="root"></property>        <property name="password" value="123456"></property>    </bean>

至此,本SSH项目从前台到后台数据库全部过程统一采用gb2312字符集来编码,解决了中文乱码的问题。

原创粉丝点击