图上数据的采集和处理,以及用户请求的处理,不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给模型和控制器。
模型(Model)用宋实现业务流程、状态的处理以及业务规则的制定。业务流程的处理过程对其他层来说是黑箱操作.模型接受视图请求的数据,并返回最终的处理结果给视图。业务模型的设计是MVC最主要的核心。把应用的模型按一定的规则抽取出来时,抽取的层次很重要。这也是判断开发人员是否优秀的依据。抽象与具体不能相隔太远,也不能太近。
控制器(Controller)的作用可以理解为从用户接收请求,将模型与视图匹配在一起共同完成用户的请求。划分控制层的作用也很明显.控制器就是一个分发器,选择什么样的模型,什么样的视图,可以完成什么样的用户请求。控制层并不做任何数据处理。例如,用户点击一链接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,然后选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都应感应到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知给所有的视图,导致显示的更新。这实际上是一种模型的变化.传播机制。
以上就是模型、视图、控制器三者之间的关系和各自的主要功能。
JSP+JavaBean+Servlet的技术组合,很好地实现了MVC模式。MVC模式是提倡要学习和使用的一种模式。MVC模式是Model-View-Controller的缩写,中文翻译为“模型-视图-控制器”。MVC应用程序总是由这3个部分组成。Event(事件或请求)导致控制器改变模型或视图,或者同时改变两者。只要控制器改变了模型的数据或者属性,所有依赖的视图都会自动更新。类似的,只要控制器改变了视图,视图会从潜在的模型中获取数据来刷新自己.MVC模式最早是由Smalltalk语言研究团提出的,应用于用户交互应用程序中。
现在来了解一下MVC 3个部分在架构中各自处于什么位置,这有助于理解MVC模式的实现。MVC与架构的对应关系是:视图处于Web层或者说是客户端,通常是JSP页面,即页面显示部分。控制器也处于Web层,通常用Servlet来实现,即页面显示的逻辑部分实现.模型处于中间层,通常用服务器端的JavaBean或者EJB实现,即业务逻辑部分的实现。
展开