概述
随着SSM框架的流行开展,肯定会涉及到SpringMVC.
表现层的设计一般都使用 MVC 模型。( MVC 是表现层的设计模型,和其他层没有关系)
-
获取请求数据
-
调用service
3.根据servic返回结果,响应返回数据
下面来说说Model,ModelMap,以及ModelAndView之间的区别
Model
Model是一个接口,实现类为ExtendedModeMap,继承ModeMap类
public class ExtendedModeMap extends ModelMap implements Model
ModelMap
ModelMap继承LinkedHashMap
public class ModelMap extends LinkedHashMap<String,Object>
Model和ModelMap的区别
作用:
通过Model与ModelMap可以往request域中存储数据。
Model与ModelMap作为控制器方法的参数。
共同:
1.Model与ModelMap实例都是springMVC自动创建并作为控制器方法参数传入,无需用户创建,且要return指定返回的页面路径.
2.查看源码分析底层原理,实际上Model与ModelMap都是通过ExtendedModeMap的子类BindingAwareModeMap实现
区别:
一般来说,可以用Model来接收各种类型的数据,如果接收一组或多个则实际上是ModelMap.
注意:
1. 通过@SessionAttributes 注解可以自动把Model或者ModelMap中的数据放入session。
2. 在页面上可以通过el表达式获取域中的数据.
Model的用法
// Model 作为方法参数
@RequestMapping("/model")
public String model(Model model){
model.addAttribute("cn","China");
return "success";
}
ModelMap的用法
// ModelMap 作为方法参数
@RequestMapping("/modelMap")
public String modelMap(ModelMap modelMap){
modelMap.addAttribute("usa","American");
return "success";
}
ModelAndView
ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。
该对象中有两个方法ModelAndView返回结果时候,既可以返回数据(Model),也可以指定跳转结果页面(view).
ModelAndView的用法
@RequestMapping("/mv")
public ModelAndView mv(){
// 返回结果
ModelAndView mv = new ModelAndView();
// 设置跳转的页面名称
mv.setViewName("success");
// 数据存储到域
mv.addObject("cn","China");
return mv;
}
ModelAndView和Model的区别
ModelAndView是方法返回值,实例是用户手动创建.
Model是方法参数,实例是springMVC自动创建并作为控制器方法参数传入,无需用户创建.
Model和ModelMap返回的是页面的指定路径,ModelAndView返回的是对象.
个人座右铭:
把简单的事做好,就是不简单.坚持努力是自信的源头!!!