2012-10-21 22 views
2

我有兩個問題,訪問會話範圍的變量在JSTL當<%@網頁會議=「假」%>

  1. 我可以訪問會話範圍使用JSP是有<%@page session="false" %>時JSTL標籤變量。在我的web應用程序中,我使用request.getSession()從servlet創建一個新的會話,然後設置屬性。然而,我的JSP頁面不包括<%@ page session="false" %>,我正在使用JSTL標籤來顯示存儲在會話和請求中的數據。調試後,我可以看到新的會話正在隨機創建。如果我將<%@ page session="false" %>添加到JSP頁面以確保未創建新會話,是否會產生影響?

  2. 此外,我已經在web.xml中設置超時15分鐘。通常情況下,如果超過15分鐘不活動,我的申請將超時。但偶爾會在1到2分鐘內超時。我不理解這種奇怪的行爲。這與創建新會話有關嗎?當它超時時,我看到有一個新的會話與不同的會話ID被創建。在我的代碼,我檢測超時如下,

    if (request.getRequestedSessionId() != null 
        && !request.isRequestedSessionIdValid()) { 
        // redirect to a login page with a message 
    } 
    

回答

0
  1. 當你寫指令<%@page session="false" %>在JSP中,這個取出線HttpSession session = request.getSession();從自動生成servlet的Java源代碼。所以不行,如果你不抓住它,你就不能訪問頁面中的會話信息。

  2. 如果在超過web.xml中設置的時間之後超時,那麼就沒有問題,但如果超時,則不會。在你的應用中必須有一些你不認爲的東西,比如在某個地方撥打session.invalidate()