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