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
分享到:
相关推荐
简易教学管理系统是一个基于Java技术栈开发的Web应用,它整合了多个核心框架,包括JSP、Spring、Struts和Hibernate,以及数据库管理系统MySQL。这样的架构为实现高效、灵活且易于维护的教学管理提供了基础。 首先,...
Struts2+Spring+Hibernate+JSP+MySQL5是一个经典的Java Web开发框架组合,也被称为SSH框架。这个项目申报系统是基于这些技术构建的,它提供了高效、灵活且可扩展的后端架构来处理复杂的业务逻辑和数据管理。以下是...
在这个项目中,"struts+spring+hibernate(mysql)用户登录及文件上传",开发者整合了这三个框架,并结合MySQL数据库实现了一个完整的用户管理系统,包括用户身份验证和文件上传功能。 首先,Struts是MVC(Model-View...
Struts、Spring、Hibernate以及MySQL是Java开发领域中非常经典的四大框架组合,它们共同构建了一个强大的Web应用程序架构。Struts提供了MVC(Model-View-Controller)设计模式的支持,Spring作为一个全面的轻量级...
不错的适合练手、课设、毕设的JSP源码:项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)不错的适合练手、课设、毕设的JSP源码:项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)不错的适合练手、课设、毕设的...
Struts2、Spring、Hibernate和MySql这四个技术是Java Web开发中常用的一套经典组合,被称为SSH框架。这个注册登录系统就是利用这些技术构建的。下面将详细讲解这套组合的相关知识点。 首先,Struts2是一个强大的MVC...
网上订餐系统(struts+spring+hibernate).rar 网上订餐设计主要采用采用MYSQL数据库进行数据表的设计,利用JSP的动态生成页面编程技术, 实现了用网络展示餐饮信息、浏览餐饮页面、注册客户、更改客户信息;同时,...
Eclipse+Struts+Spring+Hibernate+Mysql环境搭建及访问数据库实例
现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射...
《图书管理系统spring+struts+hibernate》是一款基于Java技术栈开发的图书管理软件,其核心框架包括Spring、Struts和Hibernate。该系统利用MySQL作为数据库存储数据,提供了完整的数据库备份,确保了数据的安全性与...
一个spring+struts+hibernate的例子,是eclipse的工程,用tomcat5和mysql,文件夹下包含所有的源码和库,另外还有一个.sql的文件用于建立数据库。大家觉得它有什么不好,欢迎交流
在IT行业中,开发Java Web应用时常常会使用到一套名为SSH2(Struts2、Spring、Hibernate)的技术栈,这是一套成熟的后端框架组合,能够有效地帮助开发者构建高效、可维护的应用程序。本教程将详细讲解如何在Eclipse...
根据提供的标题、描述以及部分内容,本文将详细解析与MYECLIPSE + STRUTS2 + SPRING4 + HIBERNATE4 + STRUCTS2S+OGNL + MYSQL_5.7.12相关的技术栈及其应用。这些技术在企业级开发中非常常见,能够帮助开发者构建高效...
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
本系统采用的是经典的“Struts+Spring+Hibernate+Mysql”架构,也被称为SSH框架,这是一套广泛应用于Java Web开发的技术栈,具有良好的分层设计和组件化特性。 **Struts** 是一个基于MVC(Model-View-Controller)...
使用了Struts+Hibernate+Spring来构建整个网站。 布局使用了CSS和DIV。 部署前请修改以下文件: NewReleseSystem\WebRoot\WEB-INF下面的applicationContext.xml文件 修改里面的数据库的用户名和密码为你所安装的...
Struts、Spring 和 Hibernate 是Java开发中非常著名的三个开源框架,它们组合在一起形成的SSH(Struts、Spring、Hibernate)框架,是企业级Web应用开发的常用解决方案。SSH框架的整合可以实现模型-视图-控制器(MVC...
【标题】"项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)130223"是一个基于Java技术栈的web应用程序,主要用于处理项目申报流程。这个系统利用了Struts2作为MVC框架,Spring作为依赖注入容器,Hibernate作为...
《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》详细介绍了Java Web软件架构中的各种开发技术。主要内容包括:以MySQL为数据库、Tomcat为Web服务器、Eclipse为开发工具、CVS为版本控制工具...