如何在会话到期之前用Java提醒用户?
在StackOverflow中,这个问题被讨论了很多次。但我的问题略有不同。 我需要修改现有的应用程序。我的申请很大。 如果用户没有回复,会话将在30分钟后过期。我希望在会话到期之前显示警报,比如在第25分钟我想向用户显示关于会话过期的提示
在我的应用程序中,使用了超过2000个jsp,并且没有使用常见的js。所以我无法更改所有jsp文件以包含用于检查会话超时的javascript代码。
如何处理?
答案 0 :(得分:3)
创建一个iframe
,并将jsp页面放在那里。
在首页中,iframe位于其中,然后让jsp页面更改为https://stackoverflow.com/a/1930942/67566)。
如果jsp页面在25分钟内没有改变,你可以警告用户。
如果你在你的jsp页面中使用ajax调用,那么这将更有问题,但是你有这么多jsp页面的事实让我认为你不是。
答案 1 :(得分:-1)
使用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();
}
您可以在这些方法中编写逻辑。