在我的应用程序中,我会通过每 30 秒执行一次 Ajax 调用来知道会话何时过期,但问题是当我可以控制方法时,HttpSession 刷新和 lastaccessedtime 发生了变化。所以你知道如何知道会话的状态而不改变它的行为吗?我正在使用 Jquery 和 SpringMVC 2.5
@RequestMapping(value = "/consultForm.htm", params = "verifySession", method = RequestMethod.GET)
public ModelAndView verifySessionStatus(WebRequest webRequest, Model model, HttpServletRequest request, HttpServletResponse response) {
boolean isValid = true;
HttpSession session = request.getSession(false);
if (session.getAttribute("user") == null) {
isValid = false;
}
ModelAndView modelAndView = new ModelAndView("jsonView");
model.addAttribute("sessionValid", isValid);
modelAndView.addObject(model);
return modelAndView;
}
$.ajax({
url : "search.htm?verifySession=1",
type : "GET",
async : false,
cache : false,
success : function(data) {
valid = data.sessionValid;
if (!valid) {
showPopinExpire = true;
$("#dialog-session-expired").dialog("open");
}
},
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
即使使用request.isRequestedSessionIdValid()
,每次我调用控制器方法时,会话都会刷新。
谢谢