如何续订春季课程?

时间:2014-05-19 16:09:20

标签: java jquery ajax spring session

我有一个在Websphere上运行spring MVC的Web应用程序,我正在尝试实现会话到期确认。我现在在哪里重定向,如果他们选择退出但我不知道如果选择这样做会更新会话。

到目前为止,我理解我正在使用jQuery和ajax向服务器发送请求,但不知道在哪里(url),也不知道参数或预期的响应。有谁知道我是如何发现这一点的?它是春季会议的标准功能还是我必须编写自定义函数来解决这个问题?

2 个答案:

答案 0 :(得分:0)

我能够通过组合来自多个来源的信息来解决这个问题。我想出了以下代码:

    function timeoutMessage(){
        var popupdate = new Date();
        var renewSession = confirm('Your Session is about to expire!\n\nYou will be logged out in 2 minute.\nDo you want to stay signed in?');
        if(renewSession){
            var response = new Date();
            if(response - popupdate > 120000){
                alert("Response took too long, current session has ended. \nRedirecting to login.");
            }else{
                pingServer();
                resetTimeout();
            }
        }else{
             window.location.href = "{app logout url}";
        }
    }

    function pingServer(){
        jQuery.ajax({url: "{valid server page url}",type: "HEAD",complete: function (XMLHttpRequest, textStatus) {}});
    }

     function resetTimeout(){
         window.setTimeout(function(){timeoutMessage();},1080000);
     }

    $(document).ready(function()
        resetTimeout(); 
    });

该函数设置一个与会话超时前两分钟重合的计时器。大多数站点将提供上述大部分代码,但pingServer()函数中的代码是什么;为了扩展服务器上的会话,您可以向服务器发送一个类型为“HEAD”的简单ajax调用,而不会中断应用程序主流。它被视为服务器对会话的操作,因此重置/更新会话的超时。您不需要对代码中显示的服务器响应执行任何操作;只要您发送请求,会话超时将被重置/续订。

我希望这会有所帮助。我花了一段时间才完全拼凑起来。

答案 1 :(得分:0)

为什么不为max_inactive_interval设置一个更大的数字,以便会话持续更长时间?

如果用户处于活动状态,Spring会自动续订。看一下Spring Session创建的用于存储会话数据的表:有一个列max_inactive_interval,这基本上意味着只有当用户在该时间间隔内没有活动时,会话才会过期。

enter image description here