在我的應用程序中,我會通過每30秒執行一次Ajax調用來知道會話何時到期,但問題是當我可以使用控制器方法時,HttpSession刷新和lastaccessedtime發生更改。 那麼你有沒有想法如何知道會話的狀態而不改變它的行爲。 我使用jQuery和2.5用SpringMVC使用jquery獲取會話狀態
@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()
,每次我打電話控制器的方法,該會議是刷新。
謝謝
問題是,在我的控制器中,當我獲得會話時,它被刷新並且lastaccessedtime已更新!你有想法保留它嗎? – Mohamed
當我在我的控制器中調用會話時,lastAccessedTime改變了。當我進行Ajax調用時,有什麼方法可以保留它嗎?謝謝 – Mohamed