SpringBoot : Map、Model是怎么处理的? springboot第九期

小知识点

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()给设置进去
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_47431361/article/details/123750365