Model、ModelMap、MododelAndView

Controller层执行业务逻辑,用于产生模型数据Model,而视图View用于渲染模型数据。
Model只是用来传输数据的,并不会进行业务的寻址。
ModelAndView 却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似jsp的文件。

1、Model:

  1. 如果在控制层上的方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。
  2. Model 是一个接口, 其实现类为ExtendedModelMap,继承了ModelMap类。
    一般来说,可以用model来接收各种类型的数据

2、ModelMap(Map):

  1. ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。

  2. ModelMap或者Model通过addAttribute方法向页面传递参数,然后在jsp页面上可以通过el表达式语言来获取并展示modelmap中的数据。modelmap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过控制器方法的字符串返回值来设置跳转url地址别名或者物理跳转地址。

3、ModelAndView:

添加模型数据用addObject,设置视图setViewName;

ModelAndView 对象有两个作用:

  1. 设置转向地址,这也是ModelAndView和ModelMap的主要区别.
    通过构造方法设置:
    ModelAndView view = new ModelAndView(“path:student”);
    通过setViewName方式:
    public void setViewName(String viewName){…}

  2. 将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过el表达式语言来获取并展示ModelAndView中的数据。

可以通过构造方法new ModelandView(String modelName,Object modelObject)来同时完成上面的两个功能。

扫描二维码关注公众号,回复: 10036541 查看本文章
发布了665 篇原创文章 · 获赞 115 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_42764468/article/details/104842901