我有一個簡單的Spring 3 MVC應用程序。我使用的是sessionAttribute,除了當我讓頁面放置30分鐘或更長時間時,一切正常。然後我得到一個春季幫助捕捉會話超時
org.springframework.web.HttpSessionRequiredException
告訴我,我的目標不是在會議上找到。
我想我需要以某種方式在會話超時發生時重定向回到同一頁面。我不確定如何正確使用彈簧來做到這一點。
沒有登錄要求,我已經檢查對象是否爲空。
任何建議,將不勝感激。
感謝
我有一個簡單的Spring 3 MVC應用程序。我使用的是sessionAttribute,除了當我讓頁面放置30分鐘或更長時間時,一切正常。然後我得到一個春季幫助捕捉會話超時
org.springframework.web.HttpSessionRequiredException
告訴我,我的目標不是在會議上找到。
我想我需要以某種方式在會話超時發生時重定向回到同一頁面。我不確定如何正確使用彈簧來做到這一點。
沒有登錄要求,我已經檢查對象是否爲空。
任何建議,將不勝感激。
感謝
您可以添加錯誤頁面結合HttpSessionRequiredException將重定向到第一頁在應用程序中
例如:
的web.xml
<web-app>
<error-page>
<exception-type>org.springframework.web.HttpSessionRequiredException</exception-type>
<location>/index.jsp</location>
</error-page>
</web-app>
有是不是你可以只重定向「回到同一頁面」。你的會話不見了,這就是你在客戶端上的cookie不再對應於servlet容器中的任何會話,因爲會話對象已從內存中刪除。完全不可逆轉。
您可能會增加會話超時。這是應用程序的配置,而不是春:
的web.xml:
<session-config>
<session-timeout>120</session-timeout>
</session-config>
會給你2小時空閒會話。
請注意,會話不是免費的。它們消耗資源(序列化時內存和磁盤)。如果同一用戶可以多次重新登錄,他們將有多個空閒會話,並可能導致您的DoS。
P.S.如果你沒有了會話,只想立即建立另一個會話,你總是可以在一個過濾器中完成它,不管是否是Spring。春天可能有自己的聽衆。您必須在全新的會話中添加一些內容才能使您的請求有效。
您能舉個例子嗎? – blong824 2011-04-12 22:30:59
我發佈了我的建議 – smas 2011-04-12 22:35:08
感謝這看起來像它的工作。我只是想讓我的錯誤頁面正確映射。從我注意到的情況來看,它看起來會通過spring調度器servlet映射回來,所以我需要在我的一個控制器中添加映射以訪問此頁面? – blong824 2011-04-13 20:16:40