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

时间:2013-09-02 14:33:48

标签: java session

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

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

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

如何处理?

2 个答案:

答案 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();
}

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