ModelModelMapModelAndView的使用和区别

Posted birdterror

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ModelModelMapModelAndView的使用和区别相关的知识,希望对你有一定的参考价值。

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。

 

以上是关于ModelModelMapModelAndView的使用和区别的主要内容,如果未能解决你的问题,请参考以下文章

ModelModelMapModelAndView的作用及区别