springMVC中的Model、ModelMap、ModelAndView

haidaoxianzi 2020-02-16

Model、ModelMap两者几乎没有任何区别

ModelMap(model)、ModelAndView这两者的区别:有一个需要返回对象,一个需要返回的是地址路径。

@RequestMapping(value="/findAll")
public ModelAndView findAll() throws Exception {
  ModelAndView mv = new ModelAndView();
  // ......
  return mv;
}
@RequestMapping(path="/save")
public String save(Model model) {
  // ......
  return "success";
}

ModelAndView 大概相当于 ModelMap(model) + 地址路径

在SpringMVC中,调用方法前会先创建一个隐含的数据模型,作为模型数据的存储容器,这是数据模型就是Model

也就是说在每次的前后端请求时,会携带一个背包,不管你有没有用到,这个背包是存在的,用来存放我们交互的数据的值

有个 @ModelAttribute 注解,意思是在请求方法调用之前,会优先执行被这个注解修饰的方法,就可以在请求调用之前往数据模型中存入一些数据

在前端向后端请求时,Spring 就会自动创建好 Model 和 ModelMap 实例,我们只需要使用即可.

springMVC中的Model、ModelMap、ModelAndView

Model:

Model 是一个接口,public class ExtendedModelMap extends ModelMap implements Model

通过 .attribue() 添加数据进背包,存储的数据域范围是 requestScope

ModelMap:

通过 .attribue() 添加数据进背包,作用和 request 的 setAttribute 类似,用来传递请求处理的数据,作用域范围 requestScope
ModelAndView:

Model 和 ModelMap 的结合体,有多种重载的构造方法,可以在构造方法中传入参数指定跳转到的目标页面,

也可以通过 ModelAndView 实例对象的方法指定,最后返回实例对象即可

相关推荐