1.服务端设置session的有效期比较长,但是这是个比较模糊的概念,无法确定到底要多长
<session-config>
<session-timeout>60</session-timeout>
</session-config>
2.在web端,或者客户端的主框架上,嵌入一个定时器,定时的到服务端去刷新session
function keepAlive() {
$.ajax({
type: 'GET',
url: "#springUrl('/')clientWeb/timedtask",
success: function(ret) {
var jsonRet = JSON.parse(ret);
console.dir(jsonRet);
}
});
}
/** 定时访问后台保持session*/
setInterval(keepAlive, 1 * 60 * 1000);
/**
* function setInterval(arg1, arg2)
* @param {Function} callback
* @param {Number} delay
* @memberOf Window
* @returns {Number}
*/
Window.prototype.setInterval=function(callback, delay){return 0;};
//用于刷新session的返回值,用同一个,防止资源浪费
private static Map<String, Object> timedTaskMap = new HashMap<>();
/**
* 定时任务,防止session过期
* @param request
*/
@RequestMapping("/timedtask")
@ResponseBody
public Map<String, Object> timedTask(HttpServletRequest request){
HttpSession session = request.getSession();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(session.getLastAccessedTime());
System.out.println("LastAccessedTime:"+format.format(date));
System.out.println(session.getMaxInactiveInterval());
return timedTaskMap;
}