总结: 十分钟快速理解MVC框架模式以及在Java框架中的解释

       MVC英文即Model-View-Controller,即把一个应用的输入,处理,输出流程按照模型(Model),视图(View),控制器(Controller)的方式进行分离,这样一个应用被分为3个层----模型层,视图层,控制层.

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

   MVC中,视图可以有多个,在视图中没有真正的处理,视图只作为一种数据输出的形式,一个允许用户操作的平台,模型中的代码可以被多个视图使用,控制器通过接受用户的输入,调用模型,调用视图去完成用户的请求,控制器也不做处理,只做接收请求然后通知相关的模型,再确定用哪个视图来返回数据,MVC将视图层和业务层分离,很容易改变应用程序的数据层和业务规则,耦合性低且可维护性高,MVC中的模型可以被不同的视图使用,重用性高.

MVC框架模式很早就被提出了,有人叫MVC框架,有人叫MVC设计模式,查阅了一些资料才得知,应该叫MVC框架模式.

以下是百度百科的内容

有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式。实际上它们完全是不同的概念。
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得*别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
框架模式有哪些?
MVC、MTV、MVP、CBD、ORM等等;
框架有哪些?
C++语言的QT、MFC、gtk,Java语言的SSH 、SSIphp语言的 smarty(MVC模式),python语言的django(MTV模式)等等
设计模式有哪些?
工厂模式、适配器模式、策略模式等等
简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。
       理解起来还是很简单的

1.struts2

接下来看一下从struts2来理解一下MVC模式

总结: 十分钟快速理解MVC框架模式以及在Java框架中的解释

  从MVC的角度出发看,可以对Struts2的工作流程作出如下描述:

  1. 浏览器发出请求。
  2. 控制层中的核心控制器FilterDispatcher根据请求调用相应的Action。
  3. Struts2的拦截器链(即一系列拦截器)自动对应请求调用一些通用的控制逻辑,如数据校验、对数据的封装和文件上传等功能。
  4. 回调Action中的execute()方法(Action对象的默认方法),并在方法体中调用业务逻辑组件,即自定义的JavaBean等来处理请求,如数据的查询处理等。
  5. execute()方法返回后会产生一个输出。
  6. 该输出经过拦截器链自动处理,这和开始的拦截器链处理是相反的过程。
  7. 控制层最后将数据返还并更新视图层。

        由此,可以看到Struts2和MVC是相对应的,Struts2中的FilterDispatcher对应着MVC中的控制层,Action对应着模型层,产生的结果Result对应视图层。

  • FilterDispatcher--------控制层

        用户请求首先到达Struts2中的FilterDispatcher。FilterDispatcher负责根据用户提交的URL和struts.xml中的配置,来选择合适的动作(Action),让这个Action来处理用户的请求。

        FilterDispatcher其实是一个过滤器Filter(Servlet规范中的一种Web组件),它是Struts2核心包里已经做好的类,不需要程序员去开发,是需要在项目的web.xml文件中配置一下即可。FilterDispatcher体现了J2EE核心设计模式中的前端控制器模式。

  • Action--------模型层

        Action负责把用户请求中的参数组装成合适的参数模型,并调用相应的业务逻辑进行真正的功能处理,然后产生下一个视图展示所需要的数据。最后得到下一个视图所需要的信息,并传递给控制层中的拦截器链。

  • Result--------视图层

        视图层主要用来与用户交互,它将从控制层得到的数据通过适合的展示方式展现给用户,让用户与之交互更加简洁简单。在Struts2中,除了大众熟知的JSP方式,还有freemarker、velocity等各种优秀的展示方式。

        总之,Struts2框架实现了MVC的设计思想,使得系统各组件之间的偶和降低,提高了程序的高度扩展性和可维护性。

2.SpringMVC

接下来看一下SpringMVC的流程图

总结: 十分钟快速理解MVC框架模式以及在Java框架中的解释

只要理解MVC的精髓就可以了