2012-02-15 54 views
2

我正在寫一個具有多個jsp文件的web應用程序,會話超時時間爲20分鐘。 但在特定的jsp中,當我調用一個動作時,我需要將會話超時設置得更大。我使用: request.getSession().setMaxInactiveInterval(1800);JSP - 知道什麼時候我退出一個JSP頁面

然後一個它結束了我的會話超時重置爲它的行動的原始值與: request.getSession().setMaxInactiveInterval(600);

但在運行應用程序時,以及調用的動作,一個是接近結束會話「因爲我設定的時間已經過去了。

我想知道的是,如果有什麼方法不知道我什麼時候退出jsp?不關閉瀏覽器或關閉標籤窗口。例如,我打電話給另一個jsp ?.

或者是另一種重新插入會話超時的方法,以便在操作結束時會話不會關閉?

我忘了。 該動作位於一個for bucle中,如果條件爲true,則該操作被調用。我把代碼在調用動作之前改變會話超時,並重置動作結束的時間。

for(int i = 0; i < totalreg; i++) { 
    if (condition) { 
     request.getSession().setMaxInactiveInterval(1800); 
     process(); 
     request.getSession().setMaxInactiveInterval(600); 
    } 
} 

謝謝。

+0

當你移動到其他jsp時,你明確地編碼了嗎?爲什麼不在該特定代碼中添加此行? – kosa 2012-02-15 15:03:47

回答

1

只需要一個不可見/非常小的iframe,您可以連續重新加載一些隨機頁面。或者,您可以使用AJAX來達到這個目的。這樣,只要這個頁面打開,你的會話永遠不會超時。

這也是一種非常好的方式來顯示異步行爲的進度。

+0

感謝您的回答,但爲了讓我做隱形的iframe不會被接受。關於使用ajax,我該怎麼做?我不得不說,我只是一個begennir在這個。 – 2012-02-19 20:47:07

+0

你能否說出爲什麼使用刷新iframe來保持會話不活動? AJAX不會有太大的不同,可能會導致相同的問題,無論它們是什麼。 – Simon 2012-02-19 21:49:56

+0

這是更多的政策公司,功能。 – 2012-02-20 16:52:52

相關問題