springMVC中的Model、ModelMap、ModelAndView
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 实例,我们只需要使用即可.
Model:
Model 是一个接口,public class ExtendedModelMap extends ModelMap implements Model
通过 .attribue() 添加数据进背包,存储的数据域范围是 requestScope
ModelMap:
通过 .attribue() 添加数据进背包,作用和 request 的 setAttribute 类似,用来传递请求处理的数据,作用域范围 requestScope
ModelAndView:
Model 和 ModelMap 的结合体,有多种重载的构造方法,可以在构造方法中传入参数指定跳转到的目标页面,
也可以通过 ModelAndView 实例对象的方法指定,最后返回实例对象即可