在Java中如何在会话到期前提醒用户?
在StackOverflow中,这个问题被讨论了很多次。但我的问题略有不同。我需要修改现有的应用程序。我的应用程序非常大。如果用户没有响应,会话将在30分钟后过期。我希望在会话到期之前显示警报,例如在第25分钟时,我希望向用户显示有关会话到期的提示
在我的应用程序中,使用了2000多个jsp,没有使用通用的js。因此,我无法更改所有的jsp文件,使其包含用于检查会话超时的javascript代码。
如何处理这个问题?
发布于 2013-09-02 22:38:40
创建一个iframe,并将jsp页面放在其中。
在顶部页面中,使用javascript监视器来监视jsp页面的变化(https://stackoverflow.com/a/1930942/67566)。
如果jsp页面在25分钟内没有更改,您可以警告用户。
如果您在jsp页面中使用ajax调用,那么这将是一个更大的问题,但是您有如此多的jsp页面的事实使我认为您没有。
发布于 2013-09-02 22:41:17
使用SessionListeners。
通过实现HttpSessionListener,您可以在会话即将到期之前提醒用户。
Have a look at this sample example
编辑:
下面是您可以覆盖的两个方法:sessionCreated(HttpSessionEvent se)和sessionDestroyed(HttpSessionEvent se),它们分别在创建会话和销毁会话时调用。这是一个示例代码片段。
public void sessionCreated(HttpSessionEvent se)
{
HttpSession session = se.getSession();
System.out.print(getTime() + " (session) Created:");
System.out.println("ID=" + session.getId() + " MaxInactiveInterval="+
session.getMaxInactiveInterval());
}
public void sessionDestroyed(HttpSessionEvent se)
{
HttpSession session = se.getSession();
// session has been invalidated and all session data
//(except Id)is no longer available
System.out.println(getTime() + " (session) Destroyed:ID="
+ session.getId());
}
private String getTime()
{
return new Date(System.currentTimeMillis()).toString();
}您可以在这些方法中编写您的逻辑。
https://stackoverflow.com/questions/18575583
复制相似问题