MVC是三个单词的缩写,分别为: 模型(Model),视图(View) 和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映 射为模型层可执行的操作。
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
开发方式
Java开发Web Application
Java开发Web Application有几种符合MVC设计模式的开发方式。 1:Jsp+Servlet+JavaBean(EJB) 2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model) 3:TDK(Turbine,Velocity...) 4:Xsp 5:Jsp+Struts+JavaBean(EJB) 6:SSH (Struts + Spring + Hibernate)
.NET开发Web Application
.NET开发Web Application可以采用: 1:ASPNET MVC Framework(ASPNET MVC ) 2:MonoRail (RC3) 3:ASPNET MVC2
php 开发Web Application
php 开发Web Application 可以采用: 1. Zend framework PHP官方框架 2. fleaphp/Qeephp 等国内流行框架 3. CakePHP 等国外流行框架 4. ThinkPHP 等其他框架
常见的MVC组件
Struts: Apache的,最流行的MVC组件
Struts2 :Apache用Struts 和 WebWork的组合出来的新产品,目前上升势头强劲
WebWork: 这个可是老牌的MVC组件,后来组合成了Struts2, 不过自身仍在发展
Spring MVC:SpringFramework自己整合自己Spring的优势推出的MVC组件,用户也不少
JSF: 这个是一个规范,Sun的和 Apache的都有各自的实现。用户量很大,被众多IDE支持。
Tapestry: 最彻底的MVC开发框架,丰富的组件资源,重用性很高。组件扮演着控制器Controller的角色,是模式层(Model) 中pure-domain objects和包含有组件的HTML模板之间的媒介。大多数情况下,这种方式应用于页面(页面也 是 Tapestry组件),但是在某些情况中,一个组件拥有自己的模板,包含着更多的组件,并且支持与使用者的互交。页面通过配置一系列属性表达式 (Property expressions)连接模式层和表现层。属性表达式使用另外一种开源框架OGNL(Object Graph Navigation Language)。OGNL的开源工程(project)独立于Tapestry,但是在Tapestry中起很重要的作用。OGNL主要的目的在于读 取和更新对象的Java Bean属性。
.net mvc:在.net上的mvc组件,经过了preview1~5,RC1,RC2,目前已经是正式版了,微软给出的定义是可以用于生产的架构。配合VS2008以及VS2010,相信.net mvc将会是MVC家族的重要的一员。