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>


-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值