Hibernate与Mysql数据库结合乱码问题解决

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:
  Hibernate+MySQL5.0结合的默认配置,那么向数据库写入中文数据的时候会是乱码,且jsp页面显示中文的时候也有有乱码问题,很是烦人。
  经过查询及整理,处理方法如下:
  1、修改hibernate的配置文件,在url处添加绿色的一段:  
< hibernate-configuration > 
< session-factory  name ="myjava" > 
   < property  name ="hibernate.connection.driver_class" >org.gjt.mm.mysql.Driver </ property > 
   < property  name ="hibernate.connection.url" >jdbc:mysql://localhost:3306/myjava ?useUnicode=true&amp;characterEncoding=UTF-8 </ property > 
   < property  name ="hibernate.connection.username" >root </ property > 
   < property  name ="hibernate.connection.password" >test </ property > 
   < property  name ="connection.pool_size" >10 </ property > 
   < property  name ="hibernate.dialect" >org.hibernate.dialect.MySQL5Dialect </ property > 
   < property  name ="current_session_context_class" >thread </ property > 
   < property  name ="cache.provider_class" >org.hibernate.cache.NoCacheProvider </ property > 
   < property  name ="show_sql" >true </ property > 
   < property  name ="hbm2ddl.auto" >create </ property > 
</ session-factory > 
</ hibernate-configuration >
 
2、jsp页面设置语言,同时form表单使用post方式提交
< html > 
< head > 
< meta  http-equiv ="Content-Type"  content ="text/html;charset=UTF-8" > 
< title >Event Manager </title> 
</head> 
< body > 
< form  method ="post" > 
... 
</form> 
</body> 
</html>
 
3、创建一个语言过滤servlet,用来处理请求和发送的字符编码
(1)CharacterEncodingFilter.java文件的源码如下:
import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServlet; 

@SuppressWarnings( "serial"
public  class CharacterEncodingFilter  extends HttpServlet  implements Filter { 

     public CharacterEncodingFilter() { 
   // TODO Auto-generated constructor stub 
    } 

     public  void doFilter(ServletRequest arg0, ServletResponse arg1, 
      FilterChain arg2)  throws IOException, ServletException { 
   //下面的两个编码根据你的项目所使用的中文字符集确定 
  arg0.setCharacterEncoding( "UTF-8"); 
  arg1.setCharacterEncoding( "UTF-8"); 
  arg2.doFilter(arg0, arg1); 
    } 
}
 
(2)WEB-INF/web.xml文件修改如下:
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
< web-app  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns ="http://java.sun.com/xml/ns/javaee" 
     xmlns:web ="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     xsi:schemaLocation ="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]" 
     id ="WebApp_ID"  version ="2.5" > 
  
     < filter > 
   < filter-name >CharacterEncodingFilter </ filter-name > 
   < filter-class >events.CharacterEncodingFilter </ filter-class > 
     </ filter > 
     < filter-mapping > 
   < filter-name >CharacterEncodingFilter </ filter-name > 
   < url-pattern >/* </ url-pattern > 
     </ filter-mapping > 

     < welcome-file-list > 
   < welcome-file >index.html </ welcome-file > 
   < welcome-file >index.htm </ welcome-file > 
   < welcome-file >index.jsp </ welcome-file > 
     </ welcome-file-list > 
</ web-app >
 
  到此,hibernate和mysql结合的中文存储乱码问题,jsp页面显示中文问题就解决了。如果你的应用还是有乱码问题,那就要详细对应问题情况,然后再处理问题了。


本文转自xudayu 51CTO博客,原文链接:http://blog.51cto.com/xudayu/64735,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——TestStu.java
hibernate正向生成数据库表以及配置——TestStu.java
18 1
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
14 1
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.java
hibernate正向生成数据库表以及配置——Teacher.java
13 0
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Student.java
hibernate正向生成数据库表以及配置——Student.java
10 0
|
23天前
|
SQL Java 数据库连接
使用Hibernate进行数据库持久化操作
【4月更文挑战第15天】Hibernate 是一款开源 ORM 框架,简化数据库操作,通过映射将 Java 对象与表交互。核心接口包括 SessionFactory、Session、Transaction、Query 和 Criteria。使用 Hibernate 需添加依赖,配置 hibernate.cfg.xml 文件,设置数据库信息,并创建实体类及映射文件。
|
10月前
|
关系型数据库 MySQL
MySQL实战基础知识入门(5):命令行汉字中文输出乱码的解决方案
MySQL实战基础知识入门(5):命令行汉字中文输出乱码的解决方案
56 0
|
11月前
|
SQL Oracle Java
巧用Hibernate 完成多数据库的DDL脚本创建
巧用Hibernate 完成多数据库的DDL脚本创建
177 0
|
12月前
|
JSON 小程序 数据库
小程序批量导入excel数据,云开发数据库导出cvs乱码解决方案
小程序批量导入excel数据,云开发数据库导出cvs乱码解决方案
401 0
|
12月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
34 0
|
12月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Student.hbm.xml
hibernate正向生成数据库表以及配置——Student.hbm.xml
24 0