重置会话超时

时间:2012-03-28 07:24:20

标签: java session session-timeout

我有一个网页,用户可以使用AJAX调用服务器来扩展会话。如果应用程序配置的会话超时为30分钟,则可以通过按下按钮将会话延长5分钟。当此用户提交页面时,我需要将此会话超时值重置为全局会话超时值。

Java中是否可以重置它? 要么 是否可以读取在web.xml中配置的全局会话超时值?

修改

我正在使用以下代码来扩展会话

request.getSession().setMaxInactiveInterval(300000);

3 个答案:

答案 0 :(得分:0)

用户如何扩展会话。我的意思是你给它一个关于它的javascript警报/确认框。

理想情况下,当用户向服务器提交请求时,会自动扩展会话。

代码中的

setMaxInactiveInterval()和web.xml中的<session-config>应该在正常情况下执行这些操作。

分享您申请的确切情况

编辑: 向JSP发送虚拟请求应该会自动扩展会话,因为会话超时是根据非活动间隔来衡量的,虚拟请求应该丢弃到目前为止的非活动间隔。

答案 1 :(得分:0)

我通过在执行动作类时将默认会话设置为会话变量,然后在需要时使用它来重置来解决它。 我不确定这是解决这个问题的正确方法。但它解决了我的问题,至少目前是这样。

答案 2 :(得分:0)

超时和休息功能在这里,它将根据服务响应进行工作。

时间设置功能:

$rootScope.SessionTime =localStorage.getItem('mint');
           $rootScope.tickDuration=1000;
                $rootScope.myInterval=setInterval(function(){

                  $rootScope.SessionTime=$rootScope.SessionTime-$rootScope.tickDuration
                  //console.log("secs:::::"+$rootScope.SessionTime);
                 if($rootScope.SessionTime<300000 && $rootScope.tickDuration >0){
                    $('#session').modal('show');
                    $rootScope.tickDuration =0;
                 }
           },$rootScope.tickDuration);

超时功能:

 $scope.myTimeout = function(){            
           var sessionId=getcokkies.getsessionId(); 
           $http({
                   url: config.apiUrl + '/user/refreshsession?sessionId='+sessionId,
                 method: "POST",
                   headers: {
                       'Content-Type': 'application/x-www-form-urlencoded'
                   },
                   data: $.param({
                       'userId': parseInt(getcokkies.getUserId()),
                   })
               }).then(function successCallback(response) {
                   //localStorage.setItem("mint", 600000);
                    //$rootScope.SessionTime = 600000;
                   clearInterval($rootScope.myInterval); 
                   localStorage.setItem("mint", 600000); 
                   $rootScope.SessionTime =localStorage.getItem('mint');
                  // console.log("after++++"+$rootScope.SessionTime);
                   $rootScope.tickDuration=1000; 


               }, function errorCallback(response) {});

           }