- 浏览: 364508 次
- 来自: 北京
文章分类
- 全部博客 (237)
- XML (6)
- JavaSE (39)
- Junit (1)
- Maven (10)
- JavaScript (12)
- JavaEE (16)
- HTML5 (10)
- java多线程 (8)
- Hibernate (30)
- Java反射 (3)
- Spring (11)
- Struts (1)
- svn (2)
- linux (12)
- 代码实例 (1)
- 设计模式 (1)
- UML (1)
- javassist (1)
- Oracle (3)
- Hibernate异常 (9)
- DWR (6)
- Java泛型 (2)
- SpringMVC (11)
- Dbunit (3)
- github (2)
- Algorithm (1)
- zTree (1)
- jquery (7)
- freemarker (4)
- mysql (5)
- ffmpeg (1)
- 编码 (1)
- lucene (15)
- hadoop (1)
- JVM (1)
- Regular Expressions (5)
- myeclipse (1)
- 爬虫 (7)
- 加密 (3)
- WebService (2)
- Socket (2)
- Windows (1)
最新评论
-
wxpsjm:
好直接
HV000030: No validator could be found for type: java.lang.Integer. -
wxhhbdx:
学习了,对新手来说很不错的教程。
SpringMVC入门 (二) 数值传递 -
xgcai:
正好在学dwr
DWR入门 (二)用户实例
摘自孔浩视频 spring部分-17_spring_SSH整合02_OpenSessionInViewer的讲解
思路就是创建一个filter,这个filter在视图请求的过程中获取到Spring所管理的SessionFactory对象。 这样便解决了视图层Session无法获取的问题。
1. 首先创建一个OpenSessionFilter.java
OpenSessionFilter
2. 在web.xml中配置filter
Note: 注意这里如果使用的是struts2, 那么struts2的url-pattern也是/*,所有的请求都会被struts2的拦截器拦截, 这个filter也就不会起作用了。
因此必须要将这个filter的配置放在Struts2的前面,才能正常使用。
这时就可以在Dao层调用这个类来获取Session,例如:
这样web容器便会在视图层中获取Session,并执行相应的Session操作。
==========================
Spring已经提供了OpenSessionInViewerFilter, 一般直接配置Spring的就可以了。
思路就是创建一个filter,这个filter在视图请求的过程中获取到Spring所管理的SessionFactory对象。 这样便解决了视图层Session无法获取的问题。
1. 首先创建一个OpenSessionFilter.java
OpenSessionFilter
package com.lj.filter; 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 org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class OpenSessionFilter implements Filter { //Spring的工厂,在init中获取 private WebApplicationContext wac; private static SessionFactory factory; private static ThreadLocal<Session> sessionHolder=new ThreadLocal<Session>(); private static void setSession(Session session){ sessionHolder.set(session); } public static Session getSession(){ return sessionHolder.get(); } private static void removeSession(){ sessionHolder.remove(); } @Override public void init(FilterConfig filterConfig) throws ServletException { /** * 在这里获取Spring的工厂信息,在init里面就只会执行一次 * 使用WebApplicationContextUtils.getWebApplicationContext(ServletContext)来获取Web中的Spring工厂。 * 这种手段非常重要,要熟悉 */ wac=WebApplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext()); //我们在beans.xml中定义的sessionFactory <bean id="sessionFactory"> factory=(SessionFactory) wac.getBean("sessionFactory"); } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { //开启session System.out.println("begin"); /** 要获取SessionFactory,需要先获取Spring的工厂 * 如果使用new ClassPathXmlApplicationContext(),就会产生一个新工厂,和Servlet初始化时的工厂是两个对象 * 必须通过其他方法来获取 * 在Spring中可以通过Web */ //这里不能用getCurrentSession,要用openSession() try { setSession(factory.openSession()); chain.doFilter(req, res); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } //关闭session System.out.println("back"); } @Override public void destroy() { } }
2. 在web.xml中配置filter
<filter> <filter-name>mySessionInViewerFilter</filter-name> <filter-class>com.lj.filter.OpenSessionFilter</filter-class> </filter> <filter-mapping> <filter-name>mySessionInViewerFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Note: 注意这里如果使用的是struts2, 那么struts2的url-pattern也是/*,所有的请求都会被struts2的拦截器拦截, 这个filter也就不会起作用了。
因此必须要将这个filter的配置放在Struts2的前面,才能正常使用。
这时就可以在Dao层调用这个类来获取Session,例如:
public List<Group> list() { // TODO Auto-generated method stub //return this.getSession().createQuery("from Group").list(); return OpenSessionFilter.getSession().createQuery("from Group").list(); }
这样web容器便会在视图层中获取Session,并执行相应的Session操作。
==========================
Spring已经提供了OpenSessionInViewerFilter, 一般直接配置Spring的就可以了。
<filter> <filter-name>openSessionInViewerFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSessionInViewerFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
发表评论
-
Connection is read-only. Queries leading to data modification are not allowed。
2014-04-06 21:52 3646<tx:advice id="txAdvic ... -
org.hibernate.HibernateException: No Session found for current thread
2014-04-06 12:37 0今天在maven中整合spring和hibernate,并使用 ... -
select new Topic from ' Mysql 生成SQL语句错误
2014-03-30 22:51 1615Caused by: com.mysql.jdbc.exce ... -
Unable to locate appropriate constructor on class
2014-02-20 00:11 1418org.hibernate.hql.internal.ast. ... -
Hibernate的load和get实际应用区分简单实例
2013-12-18 11:58 827今天在看孔浩的CMS视频时候看到的。 在57 -文章管理06 ... -
数据库事务 (三)虚读(Phantom Read)
2013-12-01 13:21 0关于各种读 虚读 phantom read: 转自维基 ... -
Hibernate悲观锁
2013-11-30 17:30 0为了防止两个线程同时修改一个数据,造成更新数据丢失,我们可以使 ... -
Hibernate查询HQL实例
2013-11-29 15:56 1250三个实体类对象: public class Team { ... -
QBC与HQL检索
2013-11-28 17:39 0QBC(Query By Criteria) API提供了检索 ... -
Hibernate继承映射
2013-11-28 12:36 610继承映射分为三种情况 1.每个子类一张表 比如说有一个Pers ... -
Hibernate通过Composite-element配置外联表实例 (码)
2013-11-28 11:07 980摘自圣思园Hibenrate 26. 组件映射深度解析 -37 ... -
Hibernate配置复合主键 composite primary key (二)
2013-11-27 16:41 1404摘自圣思园Hibernate 26.组件映射深度解析 上一篇 ... -
Hibernate配置复合主键 composite primary key (一)
2013-11-27 14:15 2406这篇是关于如何配置Hibernate实现复合主键的映射功能。 ... -
Hibernate通过Comparator接口自定义排序规则
2013-11-25 20:42 2469摘自圣思园 Hibernate25.自定义内存排序器详解及符合 ... -
Hibernate配置Set和List
2013-11-25 10:44 1838========================Set==== ... -
Hibernate的Map配置
2013-11-23 16:21 1257摘自圣思园022.Hibernate映 ... -
Hibernate多对多配置
2013-11-21 22:39 840场景: Student和Course,每一个Student有多 ... -
Hibernate延迟加载案例 (多: 一: 一,附代码)
2013-11-21 17:41 557摘自圣思园Hibernate20.一 ... -
Hibernate一对一配置
2013-11-20 21:49 997摘自圣思园 19.Hibernate的对象检索策略深度解析.a ... -
Hibernate的对象检索策略 (一) SQL左外连接检索策略
2013-11-20 15:32 1092首先是测试表的结构: 先通过hibernate将数据放入 ...
相关推荐
CAS客户端自定义核心过滤器,继承CAS的AbstractCasFilter自定义AuthenticationFilter
javaFilter自定义编码过滤器,防止中文乱码.
自定义过滤器,过滤请求接口的请求,认证用户并记录日志
Java自定义过滤器
这是一个struts2实例 涉及的技术包括: 1.自定义过滤器 2.文件上传下载 3.登录功能 等等
spring security 4 小例子带自定义过滤器
vue.js的filter定义的方式,已经简单的demo,自定义过滤器如何给文字加颜色
本文实例讲述了Python Django模板之模板过滤器与自定义模板过滤器。分享给大家供大家参考,具体如下: 模板过滤器 过滤器用于对模板变量进行操作。 date:改变日期的显示格式。 length:求长度。字符串,列表。 ...
GridControl的过滤器的自定义
主要介绍了Spring Boot 自定义 Shiro 过滤器无法使用 @Autowired问题及解决方法 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
Aspdotnet2_0中自定义过滤器对Response内容进行处理 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
EL、JSTL、自定义标签、过滤器的ppt
自定义模版过滤器 虽然DTL给我们内置了许多好用的过滤器。但是有些时候还是不能满足我们的需求。因此Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。 模版过滤器必须要放在app中,并且这个...
Angularjs过滤器是 angularjs非常...有朝一日,你可能需要使用自定义过滤器,所以下面这篇文章主要给大家介绍了Angular.Js中过滤器filter与自定义过滤器filter的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
个人学习练习demo,对应Blog:springCloud学习【三】:路由网关Gateway+自定义路由过滤【实例】,里面是完整的demo包,registry是注册中心模块,service是服务提供者,consume和consume-feign是消费服务的两种实现...
主要介绍了Django 过滤器汇总及自定义过滤器使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
spring-boot 过滤器 filter spring-boot 过滤器 filter
一 自定义过滤器(注册在Vue全局) 注意事项: (1)全局方法 Vue.filter() 注册一个自定义过滤器,必须放在Vue实例化前面 (2) 过滤器函数始终以表达式的值作为第一...vue自定义过滤器</title> <script src="../js/
SpringBoot中自定义消息转换器示例源码