ModelAndView
- Model 是指数据模型
- View是指UI视图
- Control是指控制流
为什么要用MVC, 目前凡是涉及到UI有界面的程序,最好采用MVC模式来设计。
View: 我们要专门有一个模块,还存放所有的UI组件库, 按钮,图片,文本框,列表,菜单等等,这些东西都是死的,没有内容。 比方说文本框,你从组库中把文本框拿出来,默认里面没有任何文字。
Model: 我们的数据模型,如果是面向对象的程序,那就是一个个的数据类。如学生,老师,汽车,职员等等。他们也可以理解成数据结构。我们必须有一个专门的模块来存放这些结构。 结构也是死的,如果没有把他拿出来用,他就永远躺上该模块中。
Control: 控制者, 可以理解成一段代码, 它会根据当前的程序状态机,将合适的数据模型中的数据填充到UI视图中。也可以反过来通过监听UI组件的变化,将一部分变化写回数据模型中。
ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。
构造
ModelAndView(String viewName)
最简单的ModelAndView,持有View的名称返回,之后View名称被view resolver的实例解析
ModelAndView(String viewName, Map model)
如果要返回Model对象,则使用Map来收集这些Model对象,然后设定给Model
ModelAndView(String viewName, String modelName, Object modelObject)
如果只是返回一个Model对象则无需使用Map,直接使用上述构造,藉由modelName,你可以在视图中取出Model并显示
ModelAndView()
这个构造方法构造出来的ModelAndView不能直接使用,因为他没有指定view,也没有绑定对应的midel对象。当然model对象不是必须的,但是view却是必须的。用这个构造方法构造的实例主要用来在以后往其中添加view设置和model对象。
实例设置view
setViewName(String viewName)
setView(View view)
前者使用viewname,后者使用预先构造好的View对象。
实例添加Model
addObject(Objext modelObject)
addObject(String modelName, Object modelObject)
addAllObjects(Map modelMap)