`
digyso
  • 浏览: 142134 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Struts + Spring + Hibernate + Mysql中文问题解决

阅读更多

Struts + Spring + Hibernate + Mysql中文问题解决
本文摘自于《诗意的活着》的博客

如果你在开发java web项目中遇到了让人麻烦的中文乱码问题,并且在搜索引擎中找到了这篇文章,希望你用一点时间读一下它,我相信它对你解决碰到的乱码问题会有帮助。

  这几天在做一个小的 Struts + Spring + Hibernate + Mysql 的练习,以前也听朋友们说过这个框架里的中文乱码挺棘手,开始也没当回事,毕竟在处理这个问题上还算老道,在做的当中确实碰到了一些问题,所以我把这个小经验写下来,以方便更多的开发人员,下面我们开始。

  首先说struts中的.properties文件的中文显示问题:

  struts 在调用 .properties 文件时,首先会取得当前系统的本地语言,用HttpServletRequest.getLocale() 取得相应的 java.util.Locale 对象,然后用 java.util.Locale.getLanguage() 取得当前语言,由此来判断到底该用哪个具体的 .properties 文件,中文当然是 _zh.properties 了。

  我们在定义自己的中文 properties 文件时,在 key 后面填写对应的中文,保存文件(这里我们保存成 temp.properties ),我们要做的是对它做编码的转换,可以直接用JDK提供的native2ascii工具,命令格式如下:

native2ascii -encoding charsetname resource-file target-file

  这个是这里的样例:

native2ascii -encoding GBK D:\workspace\eclipse\myapp\WEB-INF\classes\temp.properties D:\workspace\eclipse\myapp\WEB-INF\classes\MyMessageResources_zh.properties

  各位在写得时候要根据自己的实际情况来定义。

[小笋在处理这个问题时是用了一个插件,能自动将 *.properties ]中的中文转成 UTF-8 的编码。插件会在文章末尾附上。]

  在做完这次转换,我们就得到了想要的 .properties 文件,这个时候如果是用 eclipse 开发就要注意了,我们用 eclipse 编写的 .properties 文件,默认编码是 ISO-8859-1 ,所以即便我们用 native2ascii 转换后,文件中的中文还是??? ,在这里,我们需要对 eclipse 做一些小小的配置。 在 window - property - General - Content type - text - java properties file ,在这里我们可以配置 property 文件的默认编码,将编码设置成 GBK [小笋设置的是UTF-8],然后我们再用 native2ascii 对刚才我们用 eclipse 编写的 property 文件做一次转换,你可以看到不一样的效果。

  做完以上操作,我们的property文件就没问题了,放心的使用吧。

  OK,上面我们介绍完了 property 文件的编码设置问题,现在我们来看看 Struts 中 request 传递 Form 数据的字符集问题。

  相信大家对这个已经很熟悉了,不过作为 Struts Spring Hibernate Mysql 中的一部分,在这里我还是要介绍一下,这样才显得完整。

  其实也就是一个filter,再没有什么特别的了,我们可以直接使用tomcat给我们提供的现成的filter,位置在 Tomcat_Home\webapps\servlet-examples\WEB-INF\classes\filters,在这里我们可以找一个 SetCharacterEncoding.java 的文件,对了,就是它,copy 到你的项目中,然后在 web.xml 中做一下配置:

<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.ifite.schoolreporter.dong.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

  当然了,要把 encoding 的 value 改一下嘛,要不然我们做这个filter干什么啊,至于改成什么,解决中文,肯定是 GBK 咯,呵呵,OK了,就这么简单,不过有一点要注意,在配置 filter 时候,我们一定要把它写在 <servlet></servlet> 的前面,要不然在启动 filter 的时候会报错,filter 也将不工作。

[小笋安装 Tomcat 时没有安装这个示例程序,所以临时在网上找了一个,修改一下编码设置就能用了,内容如下:]

package com.lp521.filter;
import java.io.*;
import javax.servlet.*;
public class SetCharacterEncodingFilter implements Filter{
public void destroy(){
}

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException,ServletException{
request.setCharacterEncoding("GB2312");
chain.doFilter(request, response);
}

public void init(FilterConfig filterConfig) throws ServletException{
}
}


  好了,到这里 request 传递 form 数据的字符问题也解决了,剩什么了?

  数据入库

  好,那么在这个框架中,我们要在两个地方对数据库做配置,hibernate 中的配置我就不说了,因为没什么特别的,参考它官方提供的写法就搞定了,这里介绍 spring 里的 applicationContext.xml 中的配置写法。

  这是我自己项目中实际的写法:

<bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/schoolreporter</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>


  我这样的配置,进入mysql中的中文字符已经是 OK 的,如果这样写不行的话,可以试一下把上面的 url 的值写成这样:

<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/schoolreporter?username=root&password=root&useUnicode=true&characterEncoding=gbk </value>
</property>


  然后,要把下面的 username 项和 password 去掉,具体为什么,我想兄弟们不因该问了吧,应为在 url 中就已经都设置了呗,当然大家现在可能已经注意到了,以前语句中的“&”,在这里被写成了“&”,对了!!!就是这样,至于这个原因,请自行 google;(备注:第二个写法小东我没有测试,不过按照理论是可以通过的,如果在 spring 加载时报错,小东只能说声对不起,请参照第一种设置,那个是通过测试的)

  好了,基本上做完了上面的工作后 Struts Spring Hibernate Mysql 的中文问题已经全部搞定。

  当然了,这里还要介绍一下我的环境:JDK1.5;Tomcat5.5;mysql4.1;mysql-jconnector-3.1.7。

  开发工具及组件环境:eclipse3.1;struts1.2.7;spring1.2.2;hibernate3.0。

  还有一点要注意的是,在 mysql 中,我们要存多字节数据,为了保险,应该保证所有层面的字符集都是 GBK,尤其保证 client , database , table , coulmn,其实索性全部设置成 GBK 来的更好,具体设置方法这里就不再介绍了,请自行查阅 mysql 提供的使用手册。

  OK,上面的介绍我个人认为已经是比较详细的了,在写这篇文章的时,参考了网上很多文章,配合了一下自己的测试,通过后记录下来,以便方便更多的开发者。

文章出处:http://www.diybl.com/course/3_program/java/javajs/2008610/124436.html

分享到:
评论

相关推荐

    简易教学管理系统(jsp+spring+struts+hibernate+mysql)

    简易教学管理系统是一个基于Java技术栈开发的Web应用,它整合了多个核心框架,包括JSP、Spring、Struts和Hibernate,以及数据库管理系统MySQL。这样的架构为实现高效、灵活且易于维护的教学管理提供了基础。 首先,...

    Struts2+Spring+Hibernate+Jsp+Mysql5 项目申报系统.zip

    Struts2+Spring+Hibernate+JSP+MySQL5是一个经典的Java Web开发框架组合,也被称为SSH框架。这个项目申报系统是基于这些技术构建的,它提供了高效、灵活且可扩展的后端架构来处理复杂的业务逻辑和数据管理。以下是...

    struts+spring+hibernate(mysql)用户登录及文件上传

    在这个项目中,"struts+spring+hibernate(mysql)用户登录及文件上传",开发者整合了这三个框架,并结合MySQL数据库实现了一个完整的用户管理系统,包括用户身份验证和文件上传功能。 首先,Struts是MVC(Model-View...

    Struts+Spring+Hibernate+MySQL

    Struts、Spring、Hibernate以及MySQL是Java开发领域中非常经典的四大框架组合,它们共同构建了一个强大的Web应用程序架构。Struts提供了MVC(Model-View-Controller)设计模式的支持,Spring作为一个全面的轻量级...

    不错的适合练手、课设、毕设的JSP源码:项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)

    不错的适合练手、课设、毕设的JSP源码:项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)不错的适合练手、课设、毕设的JSP源码:项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)不错的适合练手、课设、毕设的...

    基于Struts2+Spring+Hibernate+MySql的注册登录系统.zip

    Struts2、Spring、Hibernate和MySql这四个技术是Java Web开发中常用的一套经典组合,被称为SSH框架。这个注册登录系统就是利用这些技术构建的。下面将详细讲解这套组合的相关知识点。 首先,Struts2是一个强大的MVC...

    网上订餐系统(struts+spring+hibernate).rar

    网上订餐系统(struts+spring+hibernate).rar 网上订餐设计主要采用采用MYSQL数据库进行数据表的设计,利用JSP的动态生成页面编程技术, 实现了用网络展示餐饮信息、浏览餐饮页面、注册客户、更改客户信息;同时,...

    Eclipse+Struts+Spring+Hibernate+Mysql环境搭建及访问数据库实例.doc

    Eclipse+Struts+Spring+Hibernate+Mysql环境搭建及访问数据库实例

    struts+spring+hibernate基础整合包+数据库Mysql+C3p0

    现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射...

    图书管理系统spring+struts+hibernate

    《图书管理系统spring+struts+hibernate》是一款基于Java技术栈开发的图书管理软件,其核心框架包括Spring、Struts和Hibernate。该系统利用MySQL作为数据库存储数据,提供了完整的数据库备份,确保了数据的安全性与...

    一个spring+struts+hibernate的例子

    一个spring+struts+hibernate的例子,是eclipse的工程,用tomcat5和mysql,文件夹下包含所有的源码和库,另外还有一个.sql的文件用于建立数据库。大家觉得它有什么不好,欢迎交流

    Eclipse+Struts+Spring+Hibernate+Mysql环境搭建及访问数据库实例

    在IT行业中,开发Java Web应用时常常会使用到一套名为SSH2(Struts2、Spring、Hibernate)的技术栈,这是一套成熟的后端框架组合,能够有效地帮助开发者构建高效、可维护的应用程序。本教程将详细讲解如何在Eclipse...

    MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12

    根据提供的标题、描述以及部分内容,本文将详细解析与MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12相关的技术栈及其应用。这些技术在企业级开发中非常常见,能够帮助开发者构建高效...

    struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本

    Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...

    使用struts+spring+hibernate+Mysql架构的在线订餐系统!!!

    本系统采用的是经典的“Struts+Spring+Hibernate+Mysql”架构,也被称为SSH框架,这是一套广泛应用于Java Web开发的技术栈,具有良好的分层设计和组件化特性。 **Struts** 是一个基于MVC(Model-View-Controller)...

    新闻发布系统 Struts+Hibernate+Spring

    使用了Struts+Hibernate+Spring来构建整个网站。 布局使用了CSS和DIV。 部署前请修改以下文件: NewReleseSystem\WebRoot\WEB-INF下面的applicationContext.xml文件 修改里面的数据库的用户名和密码为你所安装的...

    struts+spring+hibernate

    Struts、Spring 和 Hibernate 是Java开发中非常著名的三个开源框架,它们组合在一起形成的SSH(Struts、Spring、Hibernate)框架,是企业级Web应用开发的常用解决方案。SSH框架的整合可以实现模型-视图-控制器(MVC...

    项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)130223

    【标题】"项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)130223"是一个基于Java技术栈的web应用程序,主要用于处理项目申报流程。这个系统利用了Struts2作为MVC框架,Spring作为依赖注入容器,Hibernate作为...

    开发者突击·Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)源码

    《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》详细介绍了Java Web软件架构中的各种开发技术。主要内容包括:以MySQL为数据库、Tomcat为Web服务器、Eclipse为开发工具、CVS为版本控制工具...

Global site tag (gtag.js) - Google Analytics