no session問題的產生與解決
阿新 • • 發佈:2019-02-13
- no session問題的產生是由於,才有物件導航載入資料,頁面使用資料時,由於session已經關閉,無法載入相應資料,此時,可以配置關聯關係時設定lazy屬性=false,立即載入方法,也可以提前使用資料,使其自動載入,這裡介紹使用 OpenSessionInViewFilter解決no session問題
- 在使用了Spring的情況下,解決這個問題很簡單,因為Spring已提供了這個過濾器來解決nosession or session is closed這個問題。
<!-- 配置OpenSessionInViewFilter解決nosession問題
該過濾器必須配置在struts2核心控制期之前,否則action訪問不了
-->
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:這個過濾器要放在struts2核心控制器之前進行配置
也可以配置它的兩個引數:singleSession,sessionFactoryBeanName
sessionFactoryBeanName預設值是sessionFactory
singleSession預設值是true
OpenSessionInViewFilter的缺點是如果物件導航層級較多,會導致頁面的載入速度變慢。