我之前用SpringMVC的时候,通过OpenSessionInViewFilter控制不同的url是否延长session生命是非常好用的,但是前几日接手一个SSH框架的项目,发现这个OpenSessionInViewFilter配置不起作用了。
经过搜索,发现是跟sturts2的集成有关,在web.xml必须将OpenSessionInViewFilter过滤器放到StrutsPrepareAndExecuteFilter之前才会生效!切记过滤器的顺序!
<!-- 解决懒加载的问题 -->
<filter>
<filter-name>Spring OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBean</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>...</init-param>
</filter>