- 浏览: 378711 次
- 来自: 北京
文章分类
- 全部博客 (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 3744<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 1665Caused by: com.mysql.jdbc.exce ... -
Unable to locate appropriate constructor on class
2014-02-20 00:11 1473org.hibernate.hql.internal.ast. ... -
Hibernate的load和get实际应用区分简单实例
2013-12-18 11:58 879今天在看孔浩的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 1303三个实体类对象: public class Team { ... -
QBC与HQL检索
2013-11-28 17:39 0QBC(Query By Criteria) API提供了检索 ... -
Hibernate继承映射
2013-11-28 12:36 659继承映射分为三种情况 1.每个子类一张表 比如说有一个Pers ... -
Hibernate通过Composite-element配置外联表实例 (码)
2013-11-28 11:07 1027摘自圣思园Hibenrate 26. 组件映射深度解析 -37 ... -
Hibernate配置复合主键 composite primary key (二)
2013-11-27 16:41 1458摘自圣思园Hibernate 26.组件映射深度解析 上一篇 ... -
Hibernate配置复合主键 composite primary key (一)
2013-11-27 14:15 2461这篇是关于如何配置Hibernate实现复合主键的映射功能。 ... -
Hibernate通过Comparator接口自定义排序规则
2013-11-25 20:42 2533摘自圣思园 Hibernate25.自定义内存排序器详解及符合 ... -
Hibernate配置Set和List
2013-11-25 10:44 1887========================Set==== ... -
Hibernate的Map配置
2013-11-23 16:21 1307摘自圣思园022.Hibernate映 ... -
Hibernate多对多配置
2013-11-21 22:39 888场景: Student和Course,每一个Student有多 ... -
Hibernate延迟加载案例 (多: 一: 一,附代码)
2013-11-21 17:41 600摘自圣思园Hibernate20.一 ... -
Hibernate一对一配置
2013-11-20 21:49 1056摘自圣思园 19.Hibernate的对象检索策略深度解析.a ... -
Hibernate的对象检索策略 (一) SQL左外连接检索策略
2013-11-20 15:32 1147首先是测试表的结构: 先通过hibernate将数据放入 ...
相关推荐
CAS客户端自定义核心过滤器,继承CAS的AbstractCasFilter自定义AuthenticationFilter
"GridControl 的过滤器自定义查询" DevExpress 的 GridControl 提供了强大的过滤器功能,允许开发者自定义查询条件以满足复杂的数据检索需求。在本文中,我们将探讨如何自定义 GridControl 的过滤器以实现复杂的...
### Java自定义过滤器知识点详解 #### 一、概述 在Java Web开发中,过滤器(Filter)是一种非常实用的功能,它可以对用户请求进行预处理或对响应进行后处理。通过配置过滤器,开发者可以在不修改任何现有代码的...
在ASP.NET 2.0中,自定义过滤器(Filters)是一种强大的机制,允许开发者拦截并处理应用程序的请求和响应。这些过滤器可以用于执行多种任务,如认证、授权、异常处理以及对输出内容的修改。本文将深入探讨如何在ASP...
vue.js的filter定义的方式,已经简单的demo,自定义过滤器如何给文字加颜色
本文实例讲述了Python Django模板之模板过滤器与自定义模板过滤器。分享给大家供大家参考,具体如下: 模板过滤器 过滤器用于对模板变量进行操作。 date:改变日期的显示格式。 length:求长度。字符串,列表。 ...
"SpringSecurity学习之自定义过滤器的实现代码" Spring Security学习之自定义过滤器的实现代码主要介绍了Spring Security学习之自定义过滤器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有...
因此,开发者经常需要自定义日期选择器来提供更符合应用风格或特定功能的交互体验。这篇内容将深入探讨如何在Android中创建一个自定义日期选择器,并通过源码分析来增强我们的理解。 首先,我们要明白自定义日期...
然后,我们可以在控制器或特定动作上应用这个自定义的授权过滤器,确保只有登录的用户才能访问: ```csharp [CustomAuthorize] public class AccountController : Controller { public ActionResult Index() { /...
在本项目中,“matlab自定义过滤器为先生的HDMI缩放.zip”是一个包含MATLAB源码的压缩包,用于实现自定义的过滤器,主要用于处理HDMI信号的缩放问题。MATLAB是一种强大的数学计算和编程环境,特别适合进行信号处理和...
### 在Django框架中自定义模板过滤器的方法 #### 一、引言 Django作为最受欢迎的Python Web开发框架之一,提供了丰富的功能和强大的社区支持。在Django中,模板系统是一个非常重要的组成部分,用于处理前端展示...
**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# 代码,这些代码提供了自定义授权过滤器的示例和实现。这些过滤器可以根据你的应用需求,比如用户身份验证、角色检查或其他业务规则,来...
filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。最终一次性返回过滤后的结果。 filter()函数有两个参数: 第一个,自...
Vue提供了内置过滤器,如`capitalize`、`uppercase`、`lowercase`、`currency`等,但很多时候,我们需要创建自定义过滤器以满足特定的业务逻辑。自定义过滤器的定义语法如下: ```javascript Vue.filter('...