Spring MVC控制器-模型属性-可能的竞争条件?
我有一个Web筛选器,它将处理post请求,获取一个参数并在会话中设置它的值。然后在处理会话属性的另一个页面的模型中设置会话属性的值。例如 来自筛选器的代码段Spring MVC控制器-模型属性-可能的竞争条件?,spring,spring-boot,spring-mvc,Spring,Spring Boot,Spring Mvc,我有一个Web筛选器,它将处理post请求,获取一个参数并在会话中设置它的值。然后在处理会话属性的另一个页面的模型中设置会话属性的值。例如 来自筛选器的代码段 if (httpServletRequest.getParameters("MY_PARAM") == null) { logger.error("Parameter is null!"); throw new IllegalArgumentException("Parameter null!"); } else {
if (httpServletRequest.getParameters("MY_PARAM") == null) {
logger.error("Parameter is null!");
throw new IllegalArgumentException("Parameter null!");
} else {
logger.error("Parameter received redirecting to controller");
httpServletRequest.getSession().setAttribute("MY_ATTR", httpServletRequest.getParameters("MY_PARAM"));
//redirect code
}
然后在控制器中
@GetMapping("mypage")
public ModelAndView doStuff(HttpSession session)
ModelAndView mav = new ModelAndView("mypage");
mav.addObject("MY_ATTR", session.getAttribute("MY_ATTR"));
session.setAttribute("MY_ATTR", null);
logger.debug(mav.getModel().get("MY_ATTR") == null ? "Attribute is null" : "Attribute is set");
return mav;
}
99%的时间日志输出为“属性已设置”,但偶尔为“属性为空”。这怎么会发生
我对控制器方法进行了更多的调试。出现此问题时,HttpSession似乎与Web筛选器中设置属性的HttpSession不同