使用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的一些操作了。
分享到:
相关推荐
#### OpenSessionInViewFilter的作用 在Spring与Hibernate结合使用的项目中,为了确保Session能够在整个HTTP请求-响应周期内保持打开状态,从而支持Lazy Loading,我们通常会使用`OpenSessionInViewFilter`。这个...
`CharacterEncodingFilter`的作用就是确保请求和响应的字符编码统一为指定的格式,通常设置为UTF-8,避免因为编码问题导致的数据丢失或显示错误。通过在Web应用的配置文件(如web.xml)中添加该过滤器,可以全局设定...
为了解决这个问题,我们可以使用 Spring 提供的一个支持类OpenSessionInViewFilter,这个类可以在发起一个页面请求时打开 Hibernate 的 Session,并保持这个 Session 的生命周期,直到这个请求结束。这样可以确保 ...
`OpenSessionInViewFilter`是Spring为配合Hibernate设计的一个过滤器,其主要作用是在Web请求处理过程中打开并维持一个Hibernate Session,直到视图渲染完成。这样做的好处在于能够确保在整个请求处理过程中Session...
OpenSessionInViewFilter的主要作用是在HTTP请求的生命周期内保持一个Hibernate的Session,确保在视图层(例如JSP页面)也能访问到数据库会话,解决了“懒加载”问题,避免了因为请求结束而关闭Session导致的数据...
综上所述,Spring监听器和过滤器是Spring Web框架中不可或缺的部分,它们在处理Web请求、管理事务、统一编码、日志记录以及环境配置等方面发挥着重要作用。理解并熟练掌握这些技术,对于构建高质量的Web应用程序至关...
- **问题**:然而,这也意味着任何尝试修改数据的操作都会失败,因为Hibernate不允许在这种模式下执行写操作。 #### 解决方案 1. **调整Flush Mode**:将Session的Flush Mode改为非NEVER模式。例如,可以将其设置...
JS验证同样在此过程中起到关键作用,确保菜单信息的准确性。 3. 管理员管理:包括管理员列表、修改管理员信息、批量删除和分配菜单。管理员列表支持按登录名和菜单进行组合查询,菜单数据应实时从数据库获取。修改...
本文将围绕SSH框架整合过程中所需的几个关键类进行详细解析,旨在帮助读者更好地理解这些类的作用及其在框架整合中的应用。 #### 二、知识点详解 ##### 1. `org.springframework.web.context....
- **线程绑定**:`OpenSessionInViewFilter`的主要作用是将`HibernateSession`绑定到当前请求的线程中。 - **事务管理**:当服务层使用`HibernateTransactionManager`或`JtaTransactionManager`进行事务管理时,该...
`Open Session In View`的主要作用是在Web请求的开始阶段打开`Hibernate session`,并在请求结束时自动关闭该session。这样做的好处在于,可以确保在整个请求处理过程中session始终处于可用状态,使得在视图(View)层...
- 利用CharacterEncodingFilter和OpenSessionInViewFilter解决编码问题。 通过以上内容的学习,开发者可以深入理解Spring 2.5的核心概念,掌握其在实际开发中的应用,从而提高工作效率和代码质量。
首先,我们需要了解这三大框架的基本作用: - **Struts2**:是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,主要用于处理用户的请求和控制应用程序流程。 - **Spring**:是一个全面的企业级应用开发...
2. **AOP配置**:Spring的面向切面编程允许我们在不修改代码的情况下添加额外的功能,如日志、事务管理等。 3. **数据源和SessionFactory配置**:定义数据源(DataSource)和Hibernate的SessionFactory,为...
在Java Web开发中,SSH(Struts2、...综上所述,SSH整合是一个涉及多个层次和组件的过程,需要细心配置并理解每个部分的作用,以实现高效、稳定的Web应用。在实际开发中,还需要考虑错误处理、安全性和性能优化等方面。
内容中多次提及了“lazy initialization”异常,这通常发生在尝试访问一个被延迟加载的集合时,但是会话(Session)已经关闭或不存在。这表明开发者需要理解对象的生命周期管理、延迟加载(懒加载)机制以及...
session缓存的作用域可根据配置延长至jsp和action,通过`openSessionInViewFilter`实现;查询缓存用于提高频繁查询的效率,尤其适用于更新较少的场景。 **Java内存管理**分为持久化内存(perm)和非持久化内存。...
- `excludeProperties`参数用于指定哪些属性不应该被包含在最终输出的JSON数据中,这对于避免Hibernate的延迟加载问题非常有用。 #### 三、总结 通过上述步骤,我们可以成功地搭建起Spring4.1 + Hibernate4 + ...
这意味着Action Bean的ID被更改为Name,其Class和作用域也在Spring的配置中定义,通常作用域设置为`prototype`,以便每次请求都能创建一个新的Action实例。 #### 3. Spring配置深入 Spring的配置文件负责管理Bean...