我有一个网页,用户可以使用AJAX调用服务器来扩展会话。如果应用程序配置的会话超时为30分钟,则可以通过按下按钮将会话延长5分钟。当此用户提交页面时,我需要将此会话超时值重置为全局会话超时值。
Java中是否可以重置它? 要么 是否可以读取在web.xml中配置的全局会话超时值?
修改
我正在使用以下代码来扩展会话
request.getSession().setMaxInactiveInterval(300000);
答案 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) {});
}