SpringMvc中Model、ModelMap、ModelAndView理解和具体使用总结

大总结:

①Model、ModelMap两者似乎没有任何区别
②ModelMap(model)、ModelAndView这两者的区别:记住有一个需要返回对象,一个需要返回的是地址路径。

1.在了解这三者之前,需要知道一点:SpringMVC在调用方法前会创建一个隐含的数据模型,作为模型数据的存储容器, 称为”隐含模型”。

也就是说在每一次的前后台请求的时候会随带这一个背包,不管你用没有,这个背包确实是存在的,用来盛放我们请求交互传递的值解释: 不管我们用还是不用,它都在那里);关于这一点,spring里面有一个注解:

@ModelAttribute :在客户端每一次访问springmvc的@requestMapping请求时优先执行该controller类里面的加了@Modelttribute注解的方法,然后再去执行该请求(客户端请求的那个@requestMapping方法),类似于springAop的面向切面编程的前置通知@before,而加了@ModelAtrribute的方法一般用于接收前台jsp页面传入的参数
例子:
在这里插入图片描述
在前端向后台请求时,spring会自动创建Model与ModelMap实例,我们只需拿来使用即可;
在这里插入图片描述

public class ExtendedModelMap extends ModelMap implements Model

而是对于ModelAndView顾名思义,ModelAndView指模型和视图的集合,既包含模型 又包含视图;ModelAndView的实例是开发者自己手动创建的,这也是和ModelMap主要不同点之一;ModelAndView其实就是两个作用,一个是指定返回页面,另一个是在返回页面的同时添加属性;

它的源码参考链接:https://blog.csdn.net/qq_21223653/article/details/81365770

我们先看一下model对象
下面标题写的是model方,这是不对的,应该是model对象在这里插入图片描述
举例如下:

model.addAttribute("pager",pager);
model.addAttribute("productList",rm.getProductList());
 model.addAttribute("total",rm.getProductList().size());

接下来我们再看一下ModelMap对象,下面的标题写的是ModelMap方法,这是不对的,应该是ModelMap对象在这里插入图片描述
总结: model和modelmap这两个对象用起来似乎没有任何的区别
接下来演示ModelAndView的用法
下面标题写的是ModelAndView方法,这是不对的,应该是ModelAndView对象
在这里插入图片描述

1. Model或者ModelMap使用示例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结: 以上就是两种不同的方式取值传值,从上面我们可以看得出来这两个之间还是有一定的区别的,记住有一个需要返回对象,一个需要返回的是地址路径。

猜你喜欢

转载自blog.csdn.net/qq_40241957/article/details/88902537
今日推荐