1:Model是”模型“的意思,是MVC架构中的”M“部分,是用来传输数据的。
2:理解成MVC架构中的”M“和”V“,其中包含”Model“和”view“两部分,主要功能是:设置转向地址,将底层获取的数据进行存储(或者封装),最后将数据传递给View
3:.Model只是用来传输数据的,并不会进行业务的寻址。ModelAndView 却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似jsp的文件。Model是每次请求中都存在的默认参数,利用其addAttribute()方法即可将服务器的值传递到jsp页面中;ModelAndView包含model和view两部分,使用时需要自己实例化,利用ModelMap用来传值,也可以设置view的名称
4:model在Controller层的写法
@Controller //代表这个类会被spring接管,被这个注解的类中所有方法,如果返回值是string,并且有具体的页面可以跳转,那么就会被视图解析器解析
public class IndexController {
@RequestMapping("/demo") //意为请求 localhost:8080/demo
public String demo(Model model){
//封装数据(向模型中添加数据,可以jsp页面直接取出并渲染)
model.addAttribute("content","hello");
//会被视图解析器处理
return "hello"; //返回到哪个页面
}
}
model方法是可以返回一个对象的。model.addAttribute(String s,Object o),返回对象要创建一个实体对象生成getter和Setter,还有同String()方法
5:ModelAndView在Controller层的写法
@Controller
@RequestMapping
public class IndexController {
@RequestMapping("/demo2")
public ModelAndView demo2(){
ModelAndView modelAndView = new ModelAndView();
//返回到那个前端文件
modelAndView.setViewName("hello");
modelAndView.addObject("contentOne","helloOne");
modelAndView.addObject("contentTwo","helloTeo");
System.out.println(modelAndView);
return modelAndView;
}
}
ModelAndView有的方法和Model很类似,一共有下面这些方法。
构造方法:
- ModelAndView() //默认构造函数豆式的用法:填充bean的属性,而不是将在构造函数中的参数。
- ModelAndView(String viewName) //方便的构造时,有没有模型数据暴露。
- ModelAndView(String viewName, Map model) //给出创建一个视图名称和模型新的ModelAndView。
- ModelAndView(String viewName, String modelName, Object modelObject) //方便的构造采取单一的模式对象。
- ModelAndView(View view) //构造方便在没有模型数据暴露。
- ModelAndView(View view, Map model) //创建给定一个视图对象和模型,新的ModelAndView。
- ModelAndView(View view, String modelName, Object modelObject) //方便的构造采取单一的模式对象。
类方法
- ModelAndView addAllObjects(Map modelMap) //添加包含在所提供的模型中的所有条目。
- ModelAndView addObject(Object modelObject) //添加对象使用的参数名称生成模型。
- ModelAndView addObject(String modelName,ObjectmodelObject) //对象添加到模型中。
- void clear() //清除此ModelAndView对象的状态。
- Map getModel() //返回的模型图。
- protectedMap getModelInternal() //返回的模型图。
- ModelMap getModelMap() //返回底层ModelMap实例(从不为null)。
- View getView() //返回View对象,或者为null,如果我们使用的视图名称由通过一个ViewResolverDispatcherServlet会得到解决。
- String getViewName() //返回视图名称由DispatcherServlet的解决,通过一个ViewResolver,或空,如果我们使用的视图对象。
- boolean hasView() //指示此与否的ModelAndView有一个观点,无论是作为一个视图名称或作为直接查看实例。
- boolean isEmpty() //返回此ModelAndView对象是否为空,即是否不持有任何意见,不包含模型。
- boolean isReference() //返回,我们是否使用视图的参考,i.e.
- void setView(Viewview) //设置此ModelAndView的视图对象。
- void setViewName(StringviewName) //此ModelAndView的设置视图名称,由通过一个ViewResolverDispatcherServlet会得到解决。
- String toString() //返回这个模型和视图的诊断信息。
加粗样式boolean wasCleared()?? //返回此ModelAndView对象是否为空的调用的结果,以清除(),即是否不持有任何意见,不包含模型。