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。