• Model、ModelMap、ModelAndView的使用和区别


     

    1、Model的使用

     

      数据传递:Model是通过addAttribute方法向页面传递数据的;

     

      数据获取:JSP页面可以通过el表达式或C标签库的方法获取数据;

     

      return:return返回的是指定的页面路径;

     

    复制代码
     1     /**
     2      * Model是每一次请求可以自动创建
     3      * @param model
     4      * @return
     5      */
     6     @RequestMapping("/test01")
     7     public String test01(Model model){
     8         model.addAttribute("param_id", "01");
     9         model.addAttribute("param_name", "spring-mvc");
    10         return "test";
    11     }        
    复制代码

     

    2、ModelMap的使用

     

      ModelMap的使用与Model相同,ModelMap是一种特殊的Model,一般来说,Model可以接收各种类型的数据,如果接收的数据是List,那么这个时候Model实际上是ModelMap。

     

    3、ModelAndView的使用

     

      数据传递:ModelAndView通过addObject方法向页面传递数据;

     

      数据获取:JSP页面可以通过el表达式或C标签库的方法获取数据(与Model的获取方式相同);

     

      return:return返回的是ModelAndView对象;

     

      ModelAndView设置跳转地址有两个方式:

     

      第一种:在new ModelAndView时添加地址参数,如:

     

          ModelAndView mav = new ModelAndView("test");

     

      第二种:使用ModelAndView的setViewname(String)方法去设置,如:

     

          mav.setViewName("test");

     

    复制代码
     1   /**
     2      * ModelAndView需要我们自己创建
     3      * 可以指定跳转地址
     4      * @param model
     5      * @return
     6      */
     7     @RequestMapping("/test02")
     8     public ModelAndView test02(){
     9         //第一种方法:在创建ModelAndView对象时,指定跳转地址
    10         ModelAndView mav = new ModelAndView("test");
    11         //第二种方法:用方法setViewName,指定跳转地址
    12 //        mav.setViewName("test");
    13         mav.addObject("param_id", "02");
    14         mav.addObject("param_name", "ModelAndView");
    15         return mav;
    16     }
    复制代码

     

    4、Model与ModelAndView的区别

     

      第一点:Model只是用来传输数据的,并不会进行业务的寻址。ModelAndView 却是可以进行业务寻址的;所以Model的返回值是url地址,而ModelAndView的返回值是ModelAndView对象;

     

      第二点:Model是每一次请求可以自动创建,但是ModelAndView 是需要我们自己去new的。所以使用Model时Controller的参数是Model。

     

  • 相关阅读:
    从docker容器拷贝文件出来
    R csv数据集资源下载
    使用docker镜像搭建Python3 jupyter notebook环境
    用Python合并多个Excel文件
    vscode保存文件时自动删除行尾空格
    js判断数组是否包含某元素
    数据库锁问题
    协程
    进程间的八种通信方式
    进程与线程的区别
  • 原文地址:https://www.cnblogs.com/birdterror/p/13124666.html
Copyright © 2020-2023  润新知