2012-11-06 136 views
0

我只想在用戶在我的web應用程序中成功驗證時創建會話。但由於某種原因,即使我們只是訪問登錄頁面,struts2也會創建會話對象。struts2創建會話對象,爲什麼和什麼時候?

我仔細閱讀了一些關於struts2的文檔,發現使用struts.custom.i18n.resources可能會創建會話。所以我從struts.xml文件中刪除了它。但即使會話正在我的Web應用程序中創建。

對此的任何幫助/想法都非常感謝。

更新問題

我曾在我的web.xml以下行與卡宴數據方面的工作。

<filter> 
    <filter-name>CayenneFilter</filter-name> 
    <filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>CayenneFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

這是否會導致在我的Web應用程序中創建會話?

-Narendra

+0

請重新說明_struts2創建會話對象的問題,爲什麼以及何時。 –

+0

http://stackoverflow.com/questions/2255814/can-i-turn-off-the-httpsession-in-web-xml可能有幫助 –

+0

應用程序服務器負責創建和管理會話而不是struts 2.沒有點試圖禁用此,請參閱Davids的答案。 – Quaternion

回答

1

下面是來自Cayenne觀點的答案。默認情況下,WebApplicationContextFilter爲過濾器匹配的每個請求創建一個會話綁定的ObjectContext。這當然會創建一個HttpSession。

因此,一種解決方案是將過濾器映射從「/ *」減少爲與經過驗證的頁面相對應的更具體的URL。然後Cayenne過濾器不會被匿名用戶調用。

如果無法完成,請創建您自己的WebApplicationContextFilter版本(畢竟WebApplicationContextFilter只是一個示例,說明如何在應用程序中引導Cayenne,因此請檢查其源,併爲您自己創建類似的東西)。您自己的過濾器可以實現一些跳過匿名ObjectContext(和會話)創建的邏輯。

+0

感謝您的詳細解答。 – Narendra

4

JSP頁面中自動創建的會話,除非您特別包括指令告訴他們不要。

IMO試圖阻止會話創建是浪費時間。相反,請在的會話中輸入,並在註銷時使會話無效。其他任何工作都太多了。

+0

我已經在我的jsp頁面中使用了下面的指令來阻止創建會話。 <%@ page session =「false」%>。 – Narendra

+0

@納蘭德拉認真地說,沒有理由去解決所有的問題。爲什麼你在乎是否有一個未使用的會話? –

相關問題