第30讲--Spring提供的CharacterEncoding和OpenSessionInView功能

本文介绍如何通过配置Spring提供的CharacterEncodingFilter过滤器解决Web应用中的中文乱码问题,并展示了如何通过OpenSessionInViewFilter过滤器解决Hibernate在Web环境中由于Session关闭导致的延迟加载异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

CharacterEncoding:

 

在web 开发中常常遇到中文乱码的问题,解决的方案常常是在web.xml中 配置一个过滤器,spring为我们的web开发提供了一个过滤器,可以解决中文乱码的问题。需要在web.xml 中配置Spring为我们提供的过滤器

 

<!-- 字符集乱码过滤器 -->
	<filter>
	<filter-name>encoding</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>encoding</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 

 

实验,把附件中的web项目部署在Tomcat中如果没有这个过滤器,在页面上提交的中文数据,进了数据库就乱码了

 

注意:

 

1.我的数据库中的表的字符集是gbk

 

CREATE TABLE `person` (                               
          `id` int(11) NOT NULL AUTO_INCREMENT,               
          `name` varchar(128) NOT NULL,                       
          PRIMARY KEY (`id`)                                  
        ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk  

 

 

2.连接数据库的字符串

url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=GBK

 

3.果如两者不同意 中文数据就不能入库 回报一个错误

 

java.sql.SQLException: Incorrect string value: '\xC3\xA5\

 

 

OpenSessionInView:

 

 

Hibernate 的session的生命周期 横跨 servlet和jsp,当我们的jsp需要用到某个延迟属性的时候,发现session已经关闭了,就会发生延迟加载例外

 

使用 spring 解决 hibernatesession 关闭导致的延迟加载例外问题。

 

 

在web.xml配置

 

<!-- 使用spring解决hibernate因session关闭导致的延迟加载例外问题 -->
<filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

 

 附件中式 测试的项目,lib中的jar包 见以前 http://8366.iteye.com/admin/blogs/412303

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值