我在service里通过hibernate查询一个list,这个list要在页面遍历,也就是说在service里不能关闭session。如果关了的话页面上就报错。因为我用的是延迟加载,当页面上需要的时候才查询。session就不关了?

解决方案 »

  1.   

    老生常谈了http://topic.csdn.net/u/20080428/10/27defd7f-e1b3-45a1-b738-47470f1561ae.html
    你看看吧,或自己百度OpenSessionInViewFiltercsdn里面就n多答案,楼主搜搜。
      

  2.   

    还是贴代码吧,我就快升星了,楼主解决了尽快结贴啊。另外还是要百度了解下
    OpenSessionInViewFilter <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <!-- *************************************************************************start******** -->
    <display-name>demo</display-name>
    <!-- **********************************************************************context-param*********** -->
    <!--spring配置-->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:appContext*.xml</param-value>
    </context-param>
    <!-- ***********************************************************************listener********** -->
    <!--spring配置-->
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
    <!-- **********************************************************************filter*********** -->
    <!-- 中文过滤器 -->
        <filter>
            <filter-name>Set Character Encoding</filter-name>
            <filter-class>com.syj.util.SetCharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>GBK</param-value>
            </init-param>
        </filter>
    <!-- hibernate3 OpenSessionInView 模式 -->
    <filter>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <filter-class>
    com.syj.util.OpenSessionInViewFilter
    </filter-class>
    </filter>
    <!--struct配置 -->
    <filter>
    <filter-name>Struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    </filter>
    <!-- **********************************************************************filter-mapping*********** -->
    <!-- 中文过滤器 -->
    <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- hibernate3 OpenSessionInView 模式 注意:一定配置struct mapping的前面-->
    <filter-mapping>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>
    <!--struct配置 注意:一定配置OpenSessionInView mapping的后面-->
    <filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- ************************************************************************servlet********* -->
    <!-- 负责系统初始化的启动Servlet -->
    <servlet>
    <servlet-name>initServlet</servlet-name>
    <servlet-class>com.syj.action.InitServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 配置图形码 -->
    <servlet>
    <servlet-name>codeFact</servlet-name>
    <servlet-class>com.syj.util.CodeFact</servlet-class>
    </servlet>
    <!-- jfreechart显示图表 -->
    <servlet>
    <servlet-name>DisplayChart</servlet-name>
    <servlet-class>
    org.jfree.chart.servlet.DisplayChart
    </servlet-class>
    </servlet>
    <!-- ************************************************************************servlet-mapping********* -->
    <!-- 负责系统初始化的启动Servlet -->
    <servlet-mapping>
    <servlet-name>initServlet</servlet-name>
    <url-pattern>/initServlet</url-pattern>
    </servlet-mapping>
    <!-- 配置图形码 -->
    <servlet-mapping>
    <servlet-name>codeFact</servlet-name>
    <url-pattern>/codeFact</url-pattern>
    </servlet-mapping>
    <!-- jfreechart显示图表 -->
    <servlet-mapping>
    <servlet-name>DisplayChart</servlet-name>
    <url-pattern>/servlet/DisplayChart</url-pattern>
    </servlet-mapping>
    <!-- *************************************************************************jsp-config******** -->
    <jsp-config>
    <!--syj标签库配置-->
    <taglib>
    <taglib-uri>syj.tld</taglib-uri>
    <taglib-location>/WEB-INF/syj.tld</taglib-location>
    </taglib>
    </jsp-config>
    <!-- *************************************************************************end******** -->
    </web-app>
      

  3.   

    为什么opensessioninviewfilter 一定要配置在 struts 前面啊?