SpringMVC中ModelAndView和Model的区别

ModelAndView操作步骤:

  1. 首先是创建ModelAndView对象,再调用addObject方法

  2. 再调用setViewName方法设置jsp页面的路径,这里的地址前缀和后缀已经在web.xml文件中定义好了,可直接简写如上。如未有定义可以使用上方以注释的路径进行传入

  3. 最后返回modelAndView数据
    注:(1)返回类型为ModelAndView类型 return mv;
           (2)作用:指定返回页面; mv.setViewName("test"); (指定视图)
                  在返回指定页面的同时添加属性 mv.addObject("msg", 获取到浏览器的参数);

Model操作步骤:

  1. 在方法括号中定义Model类型 methodName(Model model)

  2. 调用addAttribute方法,参数一为给数据命名,参数二为传入上面获取到的数据 model.addAttribute("msg", 获取到浏览器的参数);

  3. 最后返回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 ;

你可能感兴趣的:(springmvc,java,spring,jsp,servlet)