2014-09-13 54 views
0

我想知道請求對象在會話超時時的行爲方式。 更具體地說,我遇到了一種情況,爲此我無法弄清楚究竟發生了什麼。會話超時後的HttpRequest對象用於Web應用程序

的情況是這樣的,

我有一個登錄頁面,輸入用戶名和密碼字段我的Web應用程序。我爲我的應用程序設置了10分鐘的時間。 我在登錄頁面上15分鐘無所事事,所以會話超時。

現在登錄我把用戶名和密碼,並提交。該頁面正在刷新,而不是提交。

那麼我可以說會話超時,請求對象也超時嗎?

+0

您可能需要發佈一些最低限度的代碼以更好地舉例說明您的問題。仔細閱讀http://stackoverflow.com/tour – ericbn 2014-09-13 15:39:00

回答

0

由於您沒有向您的問題添加任何代碼,我的解釋應該與一粒鹽。

恕我直言,當客戶端請求登錄頁面(在他提交登錄頁面之前)並且您已經設置它以便屬於超時會話的請求將被重定向到登錄頁面時,您將開始會話。

所以,如果結果不符合你的喜好,你必須改變上面的一些。

但是,爲了更好的回答,你必須向我們展示一些代碼。

對於您關於請求超時的問題。不,它沒有超時。如果服務器沒有及時響應(這是一種不同類型的超時),它只會超時。

我添加了一些Java代碼部分,我用它來指示屬於超時登錄頁面的會話的請求。順便說一句,我也應該補充說,不需要會話的請求在重定向之前被處理。

HttpSession session = request.getSession(false); 
boolean hasActiveSession; 
if (session == null) { 
    hasActiveSession = false; 
    //... 
} 
//... 
if (!hasActiveSession) { 
    request.setAttribute("alert","Your session has timed out"); 
    request.getRequestDispatcher("/WEB-INF/Login.jsp").forward(request, response); 
} 
+0

非常感謝Nuri的迴應:)。 所以,即使會話超時,請求可以由容器來服務,對吧? 這意味着如果我們拿你的例子,如果用戶的會話超時,用戶將被轉發到登錄頁面。現在在登錄頁面上,用戶再次等待15分鐘(會話超時)。現在用戶輸入用戶名和密碼,然後按提交。 這個請求是否會被處理,比如說已經被配置爲登錄url模式的過濾器?或者一個新的登錄頁面請求轉到容器(這會導致刷新)? 在此先感謝。 – 2014-09-13 17:12:56

+0

如果您在重定向時打開新會話,並且用戶再次等待新會話超時,那麼他會再次被重定向。在你的情況下,真正需要新會話來提供登錄頁面嗎?如果沒有,則在登錄完成後開始一個新會話,並只重定向應該有一個有效會話的請求。 – 2014-09-13 17:34:07

相關問題