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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
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,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——TestStu.java
hibernate正向生成数据库表以及配置——TestStu.java
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.java
hibernate正向生成数据库表以及配置——Teacher.java
|
2月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Student.java
hibernate正向生成数据库表以及配置——Student.java
|
19天前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之如何避免在修改数据库的编码格式时出现乱码状况
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
7天前
|
SQL 缓存 Java
使用Hibernate实现复杂数据库查询优化策略
使用Hibernate实现复杂数据库查询优化策略
|
8天前
|
SQL 缓存 Java
使用Hibernate实现复杂数据库查询优化策略
使用Hibernate实现复杂数据库查询优化策略
|
17天前
|
Oracle 关系型数据库 Linux
解决oracle数据库乱码
解决oracle数据库乱码
|
20天前
|
缓存 Java 数据库连接
解析Hibernate与JPA:Java对象的数据库化之旅
【6月更文挑战第25天】在Java企业开发中,Hibernate和JPA提供优雅的数据持久化方案。Hibernate是JPA规范的强大ORM实现,简化对象与数据库映射。配置环境后,通过@Entity注解定义实体类映射表,如`User`类映射&quot;users&quot;表。利用JPA的EntityManager执行查询和更新,如JPQL查询及对象更新。事务管理和性能优化是关键,确保数据完整性和应用性能。本文揭示了Hibernate与JPA的最佳实践,助开发者从容应对数据持久化。
|
20天前
|
存储 Java 数据库连接
深入探索Hibernate与JPA:Java对象与数据库表的桥梁
【6月更文挑战第25天】Java ORM如Hibernate和JPA简化了数据库交互。在电商系统案例中,JPA注解如`@Entity`、`@Table`、`@Id`定义了对象-表映射。Hibernate利用这些定义实现持久化,如`Session.save()`保存用户对象至数据库,降低了复杂性并提升了开发效率。