ModelAndView操作步骤:
-
首先是创建ModelAndView对象,再调用addObject方法
-
再调用setViewName方法设置jsp页面的路径,这里的地址前缀和后缀已经在web.xml文件中定义好了,可直接简写如上。如未有定义可以使用上方以注释的路径进行传入
-
最后返回modelAndView数据
注:(1)返回类型为ModelAndView类型return mv;
(2)作用:指定返回页面;mv.setViewName("test");
(指定视图)
在返回指定页面的同时添加属性mv.addObject("msg", 获取到浏览器的参数);
Model操作步骤:
-
在方法括号中定义Model类型
methodName(Model model)
-
调用addAttribute方法,参数一为给数据命名,参数二为传入上面获取到的数据
model.addAttribute("msg", 获取到浏览器的参数);
-
最后返回jsp页面的路径
return "test";
注:若方法返回String类型,则要使用Model,表示返回逻辑视图名,真正视图(jsp路径)=前缀+逻辑视图名+后缀
总结:
4. 每次发起请求后springmvc会自动创建Model对象(只需要我们传入 methodName(Model model)
),而ModelAndView需要我们自己创建 ModelAndView mv = new ModelAndView();
5. Model只是用来传输数据的,并不会进行业务的寻址(不能跳转页面)。而ModelAndView却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似jsp的文件。
补充:
(1)当你只有一个模型属性要返回时,可以在构造器中指定该属性来构造ModelAndView对象
(2)如果有不止一个属性要返回,可以先将它们传递到一个Map中再来构造ModelAndView对象
(3)也可以使用spring提供的Model或者ModelMap,这是java.util.Map实现;
Model与ModelMap都是实现了hashMap,并且用法一样;两者都是spring在请求时自动生成,拿来用便可;ModelAndView就是在两者的基础上可以指定返回页面;
赋值能力 ModelAndView > Model/ModelMap>request ;