2012-02-15 55 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

相关问题