小知识点
Map、Model(map、model里面的数据会被放在request的请求域 request.setAttribute)、Errors/BindingResult、RedirectAttributes( 重定向携带数据)、ServletResponse(response)、SessionStatus、UriComponentsBuilder、ServletUriComponentsBuilder
Map<String,Object> map, Model model, HttpServletRequest request 都是可以给request域中放数据,
示例
@GetMapping("/params")
public String testParam(Map<String,Object> map, Model model, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse){
map.put("hello","thisworld");
model.addAttribute("model","this is model");
Cookie cookie=new Cookie("c1","v1");
cookie.setDomain("localhost");
httpServletResponse.addCookie(cookie);
return "forward:/success";
}
Map和Model的数据会存放在request请求域中
获取请求域数据
@ResponseBody
@GetMapping("/success")
public Map success(@RequestAttribute(value = "msg",required = false) String msg,
@RequestAttribute(value = "code",required = false)Integer code,
HttpServletRequest request){
Object msg1 = request.getAttribute("msg");
Map<String,Object> map = new HashMap<>();
Object hello = request.getAttribute("hello");
Object world = request.getAttribute("world");
Object message = request.getAttribute("message");
map.put("reqMethod_msg",msg1);
map.put("annotation_msg",msg);
map.put("hello",hello);
map.put("world",world);
map.put("message",message);
return map;
}
浏览器里面cookie设置也是生效的
为什么 Map和Model的数据会存放在request请求域中
可以看到Map和Model的地址都是一样的
也就是说他们是同一个对象
他们都在这里面
我们看看这个对象是什么
怎么把我们在map和model设置的东西给放到请求域里面?
源码很简单 就是遍历 然后 用request.setAttribute()给设置进去