Map、Model(map、model里面的数据会被放在request的请求域 request.setAttribute)、Errors/BindingResult、RedirectAttributes( 重定向携带数据)、ServletResponse(response)、SessionStatus、UriComponentsBuilder、ServletUriComponentsBuilder
1、测试@Controller
public class RequestController {
@GetMapping("/params")
public String textParam(Map map,
Model model,
HttpServletRequest request,
HttpServletResponse response) {
map.put("map-msg", "map-hello");
model.addAttribute("model-msg", "model-hello");
request.setAttribute("request-msg","request-hello");
response.addcookie(new cookie("c1","v1"));
return "forward:/success";
}
@GetMapping("/success")
@ResponseBody
public Map success(@RequestAttribute(value = "msg",required = false) String msg,HttpServletRequest request) {
Map map = new HashMap<>();
map.put("msg", msg);
map.put("map-msg", request.getAttribute("map-msg"));
map.put("model-msg", request.getAttribute("model-msg"));
map.put("request-msg", request.getAttribute("request-msg"));
return map;
}
}
运行结果:
2、 原理
Map的参数解析器:MapMethodProcessor
内部解析代码:会返回 mavContainer.getModel();mavContainer是ModelAndViewContainer类型
ModelAndViewContainer的getModel()返回的是BindingAwareModelMap对象,是Model 也是Map
mavContainer.getModel(); 获取到值的



