3

如何在 Java 中的会话到期之前提醒用户?

在 StackOverflow 中,这个问题被讨论了很多次。但我的问题略有不同。我需要修改现有的应用程序。我的应用程序很大。如果用户没有响应,会话将在 30 分钟后过期。我想在会话过期之前显示警报,比如在第 25 分钟我想向用户显示有关会话过期的提示

在我的应用程序中,使用了 2000 多个 jsp,没有使用常见的 js。因此,我无法更改所有 jsp 文件以包含用于检查会话超时的 javascript 代码。

如何处理?

4

2 回答 2

3

创建一个iframe, 并将 jsp 页面放在那里。

在首页中,iframe 位于其中,然后让 javascript 监控 jsp 页面更改(https://stackoverflow.com/a/1930942/67566)。

如果 jsp 页面在 25 分钟内没有更改,您可以警告用户。

如果您在您的 jsp 页面中使用 ajax 调用,那么这将更成问题,但是您有这么多 jsp 页面的事实让我假设您没有。

于 2013-09-02T14:38:39.647 回答
-1

使用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();
}

您可以在这些方法中编写逻辑。

于 2013-09-02T14:41:17.040 回答