springMVC中 Controller层为什么可以用map来传输数据

在springmvc中 我们可以知道 model使用来传输数据用的 如图所示:

model:

  @GetMapping("/")
    public String getStudents(Model model){

        List<Student> list = new ArrayList<>();

        Student s1 = new Student();
        s1.setIdNo("N01");
        s1.setName("Tom");
        list.add(s1);

        Student s2 = new Student();
        s2.setIdNo("N02");
        s2.setName("David");
        list.add(s2);

        model.addAttribute("students",list);
        model.addAttribute("hello","Hello Thymeleaf!");

        return "student";
    }

这里我就思考了一个问题 为什么model这个参数可以返回数据给前台呢?

后来经过查证可知model对象负责在控制器和展示数据的视图之间传递数据。实际上,放到model属性中的数据将会被复制到Servlet Response的属性中 而像thymeleaf和其他引擎模板就能去访问到他们了

modelAndView:

    public ModelAndView hello() {
        ModelAndView modelAndView = new ModelAndView("hello");
  
       modelAndView.addObject("message", "Hello World, Hello Kitty");
        return modelAndView;
    }

而modelAndView不只是会传输数据 还会返回一个view视图,但是每次使用起来都需要手动new一个,一般适合用于@RestController

map:

    @GetMapping("/main")
    public String  main(Map<String,Object> map){
            map.put("name","zlc");
      return "hello";
    }

这里博主用了map参数来传输数据给前台,却依然能行,这里博主去研究了一下,发现其实model其实是一个接口继承了一个叫modelMap类,实现类为ExtendModelMap.

 这里博主只作为一个技术分享,学习与记录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值