模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。MVC是一个软件构架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
1、B/S应用程序发展
最开始的Web应用程序是用CGI,比较复杂,基本上不存在MVC,全部放在一起。而取所有的HTML代码都在CGI程序中,页面调整比较麻烦。因此,那时间的Web应用程序页面都较简单、也比较难看。当然,客户基本上也不会对页面提出这样那样的要求。
接着是以Microsoft的ASP为领头羊的Web动态脚本时代,包括PHP,JSP等。这一时间的动态程序代码以脚本的形式放在页面文件中。根据大多数项目的需要,可以把程序逻辑代码集中存放在控件(asp)及Javabean(jsp)中。而页面脚本中只包括部门显示代码,从而实现简单的MVC构架。
随着网络技术的普及,B/S技术的发展,基于B/S应用程序的优势越来越明显。用户对程序不但要求能实现正确的功能,还要求更加友好、优美的用户界面。美工及界面设计的重要性也更加突出,因此,基于B/S的应用软件开发更需要专业的界面开发团队及系统功能开发团队。要使两者能够实现高效及科学的协作配合。MVC成了基于B/S软件开发必须引入的Web框架。而Microsoft 推出的.net基本上解决了代码及页面的分离,同时Java领域也出现了众多优秀的MVC框架,如Struts、webwork、Tapestry 、JSF。
2、当前的主流Java Web框架
Struts是诞生得比较早,当前使用得非常广泛一种开发框架。主要通过ActionForm封装在POVO间传递数据,通过Action控制程序及页面跳转,使用JSP作为View显示页面。
JSF是SUN推出标准技术,是一种基于页面组件Web开发框架。Tapestry是Apache Jakarta下的一个基于页面组件技术的Web开发框架。通过基于组件的页面技术,可以实现一个页面引入多个组件,达到灵活的控制。
Struts属于技术上落后但比较有市场的框架,而后两者属于技术先进的、功能强大的Web框架。Struts受到Action、ActionForm、JSP的限制,实现页面组件编程难度相对比较大,而Tapestry/JSF则没有太多这些技术框架限制,两者在组件编程方面更让编程者自由一些,方便一些,这也是组件型框架的优势。然而,基于页面组件的开发思想跟以往的开发思想有比较大的转变,涉及到的技术也比较多。因此,上手困难,要考虑的问题比较多,运用到实际项目中也不容易。
通用MVC框架流程图