模型视图控制器(MVC)是年代Smalltalk出现的一种软件设计模式现在已经被广泛的使用
模型(Model)
模型是应用程序的主体部分模型表示业务数据或者业务逻辑
视图(View)
视图是应用程序中用户界面相关的部分是用户看到并与之交互的界面
控制器(controller)
控制器工作就是根据用户的输入控制用户界面数据显示和更新model对象状态
MVC式的出现不仅实现了功能模块和显示模块的分离同时它还提高了应用系统的可维护性可扩展性可移植性和组件的可复用性
早期的程序中如果不注意对数功能和显示的解耦合常常会导致程序的复杂及难以维护很多VBDelphi等RAD程序都有这种问题甚至现在的C#Java有时候也会出现把业务逻辑写在显示模块中的现象
管MVC设计模式很早就提出但在Web项目的开发中引入MVC却是步履维艰主要原因一是在早期的Web项目的开发中程序语言和HTML的分离一直难以实现CGI程序以字符串输出的形式动态地生成HTML内容后来随着脚本语言的出现前面的方式又被倒了过来改成将脚本语言书写的程序嵌入在HTML内容中这两种方式有一个相同的不足之处即它们总是无法将程序语言和HTML分离二是脚本语言的功能相对较弱缺乏支持MVC设计模式的一些必要的技术基础直到基于JEE的JSPModel问世时才得以改观它用JSP技术实现视图的功能用Servlet技术实现控制器的功能用JavaBean技术实现模型的功能
JSPModel与JSPModel
SUN在JSP出现早期制定了两种规范称为Model和Model虽然Model在一定程度上实现了MVC但是它的应用用并不尽如人意
JSPModel
JSPModel
model容易使系统出现多个Controller并且对页面导航的处理比较复杂
有些人觉得model仍不够好于是CraigRMcClanahan年月提交了一个WEBframework给JavaCommunity这就是后来的Struts
年月Struts正式发布该项目也成为了ApacheJakarta的子项目之一
Struts质上就是在Model的基础上实现的一个MVC架构它只有一个中心控制器他采用XML定制转向的URL采用Action来处理逻辑