簡體   English   中英

當<%@ page session =“ false”%>時,在JSTL中訪問會話范圍的變量

[英]Accessing session scoped variable in JSTL when <%@page session=“false” %>

我有兩個問題,

  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 } 
  1. 當您在JSP中編寫指令<%@page session="false" %>時,這將刪除HttpSession session = request.getSession(); 從其自動生成的servlet的java源代碼中獲取。 因此,不,如果您不首先抓取會話信息,則無法訪問該頁面中的會話信息。

  2. 如果在比web.xml中設置的時間更長的時間后超時,則可以,但如果超時時間更早,則可以。 您的應用程序中一定有一些您不會想到的東西,例如某個地方對session.invalidate()的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM