`
whoosh
  • 浏览: 235363 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

OpenSessionInViewFilter不起作用

阅读更多
使用Spring Hibernate Struts 编写web应用,搭架构的时候测试出现 could not initialize proxy - no Session,网上搜了下说:是因为,你使用了lazy=true,这样hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用getXXX()调用的时候,hiberante会利用这个保存的方法去从数据库中取数据。而往往我们在jsp页面中使用getXXX()准备展示数据的时候,session早已经在dao中就关闭了。

于是就按照网上的方法在web.xml里面加入如下配置:
<filter>
		<filter-name>openSessionInView</filter-name>
		<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>openSessionInView</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

配置完成后还是报错,思考了一下,把这个filter放到了struts的StrutsPrepareAndExecuteFilter上面,不报错了。

思考原因:如果是先进入StrutsPrepareAndExecuteFilter,再进入OpenSessionInViewFilter,OpenSessionInViewFilter就管理不了Struts的一些操作了。
分享到:
评论
4 楼 lgywyx 2016-06-07  
问题是我放上面了,也出同样的错误
3 楼 whoosh 2014-12-10  
qingcheng123 写道
楼主你好,我用的是spring4 + jpa + hibernate4还是报no session的错,请楼主指点一二。
web.xml配置如下
<filter>
    <filter-name>openEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>openEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


Filter的位置要放在最上面
2 楼 qingcheng123 2014-07-16  
楼主你好,我用的是spring4 + jpa + hibernate4还是报no session的错,请楼主指点一二。
web.xml配置如下
<filter>
    <filter-name>openEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>openEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
1 楼 z_senaj 2012-04-26  
楼主厉害!遇到了同样的问题!

相关推荐

    过滤器对于session周期的控制

    #### OpenSessionInViewFilter的作用 在Spring与Hibernate结合使用的项目中,为了确保Session能够在整个HTTP请求-响应周期内保持打开状态,从而支持Lazy Loading,我们通常会使用`OpenSessionInViewFilter`。这个...

    Spring提供的CharacterEncoding和OpenSessionInView功能

    `CharacterEncodingFilter`的作用就是确保请求和响应的字符编码统一为指定的格式,通常设置为UTF-8,避免因为编码问题导致的数据丢失或显示错误。通过在Web应用的配置文件(如web.xml)中添加该过滤器,可以全局设定...

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    为了解决这个问题,我们可以使用 Spring 提供的一个支持类OpenSessionInViewFilter,这个类可以在发起一个页面请求时打开 Hibernate 的 Session,并保持这个 Session 的生命周期,直到这个请求结束。这样可以确保 ...

    Spring hibernate opensessioninview

    `OpenSessionInViewFilter`是Spring为配合Hibernate设计的一个过滤器,其主要作用是在Web请求处理过程中打开并维持一个Hibernate Session,直到视图渲染完成。这样做的好处在于能够确保在整个请求处理过程中Session...

    我的智囊团(SSH)_04_开发提问及回复功能_上

    OpenSessionInViewFilter的主要作用是在HTTP请求的生命周期内保持一个Hibernate的Session,确保在视图层(例如JSP页面)也能访问到数据库会话,解决了“懒加载”问题,避免了因为请求结束而关闭Session导致的数据...

    spring监听器

    综上所述,Spring监听器和过滤器是Spring Web框架中不可或缺的部分,它们在处理Web请求、管理事务、统一编码、日志记录以及环境配置等方面发挥着重要作用。理解并熟练掌握这些技术,对于构建高质量的Web应用程序至关...

    使用Spring引起的错误

    - **问题**:然而,这也意味着任何尝试修改数据的操作都会失败,因为Hibernate不允许在这种模式下执行写操作。 #### 解决方案 1. **调整Flush Mode**:将Session的Flush Mode改为非NEVER模式。例如,可以将其设置...

    用户菜单管理

    JS验证同样在此过程中起到关键作用,确保菜单信息的准确性。 3. 管理员管理:包括管理员列表、修改管理员信息、批量删除和分配菜单。管理员列表支持按登录名和菜单进行组合查询,菜单数据应实时从数据库获取。修改...

    SSH框架整合所需类class.txt

    本文将围绕SSH框架整合过程中所需的几个关键类进行详细解析,旨在帮助读者更好地理解这些类的作用及其在框架整合中的应用。 #### 二、知识点详解 ##### 1. `org.springframework.web.context....

    spring框架登录初始化数据与struct2权限设置等相关知识

    - **线程绑定**:`OpenSessionInViewFilter`的主要作用是将`HibernateSession`绑定到当前请求的线程中。 - **事务管理**:当服务层使用`HibernateTransactionManager`或`JtaTransactionManager`进行事务管理时,该...

    Open_Session_In_View详解.doc

    `Open Session In View`的主要作用是在Web请求的开始阶段打开`Hibernate session`,并在请求结束时自动关闭该session。这样做的好处在于,可以确保在整个请求处理过程中session始终处于可用状态,使得在视图(View)层...

    spring2.5学习PPT 传智博客

    - 利用CharacterEncodingFilter和OpenSessionInViewFilter解决编码问题。 通过以上内容的学习,开发者可以深入理解Spring 2.5的核心概念,掌握其在实际开发中的应用,从而提高工作效率和代码质量。

    struts2.3+spring3.1.2+hibernate4.1.6 配置说明

    首先,我们需要了解这三大框架的基本作用: - **Struts2**:是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,主要用于处理用户的请求和控制应用程序流程。 - **Spring**:是一个全面的企业级应用开发...

    SSH配置模板[参照].pdf

    2. **AOP配置**:Spring的面向切面编程允许我们在不修改代码的情况下添加额外的功能,如日志、事务管理等。 3. **数据源和SessionFactory配置**:定义数据源(DataSource)和Hibernate的SessionFactory,为...

    SSH整合环境 配置

    在Java Web开发中,SSH(Struts2、...综上所述,SSH整合是一个涉及多个层次和组件的过程,需要细心配置并理解每个部分的作用,以实现高效、稳定的Web应用。在实际开发中,还需要考虑错误处理、安全性和性能优化等方面。

    错误及解决方案.pdf

    内容中多次提及了“lazy initialization”异常,这通常发生在尝试访问一个被延迟加载的集合时,但是会话(Session)已经关闭或不存在。这表明开发者需要理解对象的生命周期管理、延迟加载(懒加载)机制以及...

    java和数据库性能优化.doc

    session缓存的作用域可根据配置延长至jsp和action,通过`openSessionInViewFilter`实现;查询缓存用于提高频繁查询的效率,尤其适用于更新较少的场景。 **Java内存管理**分为持久化内存(perm)和非持久化内存。...

    Hibernate4.1环境搭建

    - `excludeProperties`参数用于指定哪些属性不应该被包含在最终输出的JSON数据中,这对于避免Hibernate的延迟加载问题非常有用。 #### 三、总结 通过上述步骤,我们可以成功地搭建起Spring4.1 + Hibernate4 + ...

    struts_hibernate_spring集成

    这意味着Action Bean的ID被更改为Name,其Class和作用域也在Spring的配置中定义,通常作用域设置为`prototype`,以便每次请求都能创建一个新的Action实例。 #### 3. Spring配置深入 Spring的配置文件负责管理Bean...

Global site tag (gtag.js) - Google Analytics