博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

由于在数据库获取数据采用的是load的方法 只是一个代理对象  则jsp页面用到相关数据才用发出sql语句对数据库进行查询 但等到jsp页面需要数据发出sql语句 这时session已经关了  Spring为此提供了一个拦截器 在jsp页面查询到数据后再将session关闭

一、

  1、将以下代码复制到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>

  2、以上代码一定要在

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>

   <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

前面

二、可以采用get读取数据 但是如果fetch= FetchType.EAGER还是会出现该问题 所以推荐使用第一种方法

这样就能正常显示了