2011-12-26 72 views
0

我想在我的Web應用程序中用戶閒置1分鐘的情況下過期我的瀏覽器會話?我試圖做兩件事情: -如何在java用戶不活動的情況下過期瀏覽器會話?

Approach1: -把下面的代碼在web.xml

<session-config> 
    <session-timeout>1</session-timeout> 
</session-config> 

Approach2: -

session.setMaxInactiveInterval(1*60); 

無論是aproaches未過期的會話。即使用戶不進行3分鐘的活動,我仍然繼續下去?

當它不工作時: -當我直接登錄屏幕並進行登錄時,它不起作用。

當它的工作原理: -雖然同樣的方法工作,當我集成以上的web應用程序與我的不同的web應用程序之一,說webapp2。在這種情況下會發生什麼,我在webapp2上提供了一個鏈接,它直接將我帶到webapp1而不詢問登錄憑證。如果用戶在1分鐘內沒有進行活動,註銷工作是否有效?

我不明白爲什麼它不是在第一種情況下工作,當我手動進行登錄,雖然web.xml是相同的和類,我把session.setMaxInactiveInterval(1 * 60)在兩種情況下執行?

回答

0

僅當服務器在web.xml/session/session-timeout-out中定義的一段時間內從服務器端 找到不活動時,會話纔會超時。您應該通過從客戶端發送請求並在獲得響應之後測試它是否正常工作,只需關閉瀏覽器窗口即可。會話超時間隔後發送一個請求。檢查它是否是新會話(檢查會話ID)。更多幫助? enter code here閱讀下面 -

那麼有一件事情叫基於Java的Web應用程序的Web應用程序監聽器。 這些監聽器監聽客戶的請求,會話和相關事情。對於會話超時處理,您可以使用會話偵聽器。第1步 - 修改web.xml中包括一個Web應用程序監聽器:

<listener> 
    <listener-class>some.package.name.MySessionListener</listener-class> 
</listener> 

而且,現在在你的源目錄中創建上述類:

package some.package.name; 

public class SessionListener implements javax.servlet.http.HttpSessionListener { 

    public void sessionCreated(HttpSessionEvent arg0) { 
     //write your own code for when new session is created. 
    } 

    public void sessionDestroyed(HttpSessionEvent arg0) { 
     //Write your own c`enter code here`ode for when session is destroyed. 
    } 
} 

希望你覺得它有用。 :)。

+0

嗨sadsa,謝謝你的回覆。我的應用程序正在使用實現ServletContextListener的偵聽器。但我的主要問題是爲什麼它在一種情況下工作,而不是其他情況下,當我直接使用憑據登錄時 – 2011-12-26 11:34:06

相關問題