`
冽豹之姿
  • 浏览: 40412 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

OpenSessionInView模式运用

阅读更多
想解决问题:spring中session管理opersession,避免页面中数据未输出完session就被关闭了(session延迟加载)

转载:

Spring+Hibernate中OpenSessionInView模式运用配置OpenSessionInView模式也很简单,Spring提供了两种方式:

1、过滤流Filter

<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>
             org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter> 
 
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>


2、Interceptor

<!-- SimpleUrlHandlerMapping -->    
    <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="interceptors" ref="openSessionInViewInterceptor"/>        
        <property name="mappings">
          <props>       
              。。。               
          </props>    
        </property>
    </bean>
    
    <!-- =========== openSessionInViewInterceptor ==============-->
    <bean id="openSessionInViewInterceptor"
           class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>


推荐用第二种方式

但尝试使用时发现,第一种方法看似简单,加入到代码中总是报错。

按上面所说方法,加在web.xml中后,在最上面加着。报错:java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?

在网上搜索,提示:需要在web.xml中加入

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

加上之后直接启动报错了。。

main FATAL - Proxool Provider unable to load JAXP configurator file: proxool.xml
org.logicalcobwebs.proxool.ProxoolException: Parsing failed.

Caused by: org.logicalcobwebs.proxool.ProxoolException: Attempt to register duplicate pool called 'dbpool'

再经查询说需要在web.xml中加入如下:

<!-- Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用,号分隔此参数用于后面的Spring-Context loader -->

<context-param> 

<param-name>contextConfigLocation</param-name> 

<param-value>/WEB-INF/applicationContext*.xml,classpath*:applicationContext*.xml</param-value> 

</context-param>


第二种方法,感觉说的不是很明确。

大家有没有使用过的,能告知具体如何处理,谢谢!(在网上找了好久,都是这个,可是感觉不知道如何用。)

补充:昨天新试第一种方法,只需在web.xml中加入即可,并注意注释掉struts-conf.xml中的如下部分。

web.xml中加入:

<filter>    
        <filter-name>OpenSessionInViewFilter</filter-name>    
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 
        <init-param>       
         <param-name>singleSession</param-name>       
         <param-value>true</param-value>    
        </init-param> 
    </filter>    
       
    <filter-mapping>    
        <filter-name>OpenSessionInViewFilter</filter-name>    
        <url-pattern>/*</url-pattern>    
    </filter-mapping> 
       
    <listener>    
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    
</listener>

struts-conf。xml中需注释内容:

<!--
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation"
        value="/WEB-INF/applicationContext.xml"/>
     </plug-in>
     
    
-->


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics