- 浏览: 377297 次
- 来自: 北京
文章分类
- 全部博客 (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 3735<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 1659Caused by: com.mysql.jdbc.exce ... -
Unable to locate appropriate constructor on class
2014-02-20 00:11 1464org.hibernate.hql.internal.ast. ... -
Hibernate的load和get实际应用区分简单实例
2013-12-18 11:58 875今天在看孔浩的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 1295三个实体类对象: public class Team { ... -
QBC与HQL检索
2013-11-28 17:39 0QBC(Query By Criteria) API提供了检索 ... -
Hibernate继承映射
2013-11-28 12:36 651继承映射分为三种情况 1.每个子类一张表 比如说有一个Pers ... -
Hibernate通过Composite-element配置外联表实例 (码)
2013-11-28 11:07 1021摘自圣思园Hibenrate 26. 组件映射深度解析 -37 ... -
Hibernate配置复合主键 composite primary key (二)
2013-11-27 16:41 1449摘自圣思园Hibernate 26.组件映射深度解析 上一篇 ... -
Hibernate配置复合主键 composite primary key (一)
2013-11-27 14:15 2456这篇是关于如何配置Hibernate实现复合主键的映射功能。 ... -
Hibernate通过Comparator接口自定义排序规则
2013-11-25 20:42 2523摘自圣思园 Hibernate25.自定义内存排序器详解及符合 ... -
Hibernate配置Set和List
2013-11-25 10:44 1882========================Set==== ... -
Hibernate的Map配置
2013-11-23 16:21 1299摘自圣思园022.Hibernate映 ... -
Hibernate多对多配置
2013-11-21 22:39 884场景: Student和Course,每一个Student有多 ... -
Hibernate延迟加载案例 (多: 一: 一,附代码)
2013-11-21 17:41 593摘自圣思园Hibernate20.一 ... -
Hibernate一对一配置
2013-11-20 21:49 1047摘自圣思园 19.Hibernate的对象检索策略深度解析.a ... -
Hibernate的对象检索策略 (一) SQL左外连接检索策略
2013-11-20 15:32 1141首先是测试表的结构: 先通过hibernate将数据放入 ...
相关推荐
JavaFilter自定义编码过滤器知识点 一、Filter接口和 FilterChain接口 在 Java 中, Filter 接口和 FilterChain 接口是 Servlet 规范中的两个重要组件。 Filter 接口用于定义一个过滤器, FilterChain 接口用于将...
"GridControl 的过滤器自定义查询" DevExpress 的 GridControl 提供了强大的过滤器功能,允许开发者自定义查询条件以满足复杂的数据检索需求。在本文中,我们将探讨如何自定义 GridControl 的过滤器以实现复杂的...
vue.js的filter定义的方式,已经简单的demo,自定义过滤器如何给文字加颜色
"SpringSecurity学习之自定义过滤器的实现代码" Spring Security学习之自定义过滤器的实现代码主要介绍了Spring Security学习之自定义过滤器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有...
自定义模板过滤器则是在Django提供的过滤器基础上,扩展或修改现有功能,以满足特定需求。本文将结合实例,分析Django模板过滤器的功能、原理、使用方法以及在自定义模板过滤器时需要注意的相关操作事项。 首先,...
EL、JSTL、自定义标签、过滤器的ppt
Java 使用 Gateway 自定义负载均衡过滤器 Java 使用 Gateway 自定义负载均衡过滤器是指在 Java 项目中使用 Spring Cloud Gateway 框架来实现自定义的负载均衡过滤器,以解决多实例环境下的路由问题。 知识点一:...
在本项目中,“matlab自定义过滤器为先生的HDMI缩放.zip”是一个包含MATLAB源码的压缩包,用于实现自定义的过滤器,主要用于处理HDMI信号的缩放问题。MATLAB是一种强大的数学计算和编程环境,特别适合进行信号处理和...
### 在Django框架中自定义模板过滤器的方法 #### 一、引言 Django作为最受欢迎的Python Web开发框架之一,提供了丰富的功能和强大的社区支持。在Django中,模板系统是一个非常重要的组成部分,用于处理前端展示...
springboot整合swagger-bootstrap-ui,过滤器放开并解决自定义错误信息返回冲突-DEMO
**C# WinForm自定义表单设计器** 在.NET框架中,C#是一种广泛使用的编程语言,尤其在开发桌面应用程序时,WinForm是一个重要的选择。本文将深入探讨如何使用C#来构建一个自定义的WinForm表单设计器。这个设计器允许...
SpringBoot的filter过滤器 一、过滤器的作用和概述 1.1 简述 1.2 使用场景 二、自定义过滤的两种方式 ...2.3.4自定义过滤器类UserLoginFilter.java 2.3.5 templates下的index页面 2.3.6被拦截后重定向的页面 2.3.7 测试
自定义表单设计器是一种强大的工具,它允许用户根据自己的需求创建和定制各种数据输入界面,无需深入编程细节。本项目提供了C#语言实现的自定义表单设计器的演示版源码,这对于开发者来说是一个很好的学习资源,特别...
使用自定义的授权过滤器,可以方便地实现各种授权逻辑,例如基于角色的访问控制、基于用户的访问控制等。 实现动作过滤器: 动作过滤器可以在动作方法前后执行,例如记录日志、检查参数等。开发者可以通过实现 ...
在 "Hangfire.Dashboard.Authorization-master" 压缩包中,你将找到一组 C# 代码,这些代码提供了自定义授权过滤器的示例和实现。这些过滤器可以根据你的应用需求,比如用户身份验证、角色检查或其他业务规则,来...
自定义Navigation导航器(支持动态配置) 自定义Navigation导航器(支持动态配置) 自定义Navigation导航器(支持动态配置) 自定义Navigation导航器(支持动态配置) 自定义Navigation导航器(支持动态配置) ...
Vue提供了内置过滤器,如`capitalize`、`uppercase`、`lowercase`、`currency`等,但很多时候,我们需要创建自定义过滤器以满足特定的业务逻辑。自定义过滤器的定义语法如下: ```javascript Vue.filter('...
系统提供了预设的时间选择器对话框,但有时为了满足特定的UI设计或者功能需求,开发者需要自定义时间选择器。本教程将深入探讨如何在安卓平台上创建自定义的时间选择器。 首先,我们从基础开始。在安卓中,`...
Angular内置了多种过滤器,同时支持创建自定义过滤器,以满足特定项目的需求。 1. **货币格式化过滤器(currency)** Angular的`currency`过滤器用于将数值转换为货币格式。例如,`{{value | currency:'¥'}}`会将...