MVC 模型,它包含了 Model(模型),View(视图)和 Controller(控制器)。
其中 Model,通常指的就是 JavaBean。
View,通常指的是 JSP 或者 HTML(即用于展示数据的资源,包括静态资源和动态资源)。
Controller,通常指的是 Servlet 或者 Filter,以及框架中封装的各类控制器。
首先,解释一下 JavaBean,请看下图:
其次,我们说的 MVC 模型,它是针对于表现层的设计模型。
最后,本课程内容会涉及常见框架 MVC 框架 SpringMVC 和 Struts2 的源码剖析,思路分析以及部分功
能的代码实现。要求学习者有一定的前置知识,例如 SpringMVC 的使用,Struts2 的使用等等。
表现层模型 MVC 的由来
Model1 模型
Model1 模型是很早以前项目开发的一种常见模型,只有 jsp 和 JavaBean 两部分组成。
它的优点是:结构简单。开发小型项目时效率高。
它的缺点也同样明显:
第一:JSP 的职责兼顾于展示数据和处理数据(也就是干了控制器和视图的事)
第二:所有逻辑代码都是写在 JSP 中的,导致代码重用性很低。
第三:由于展示数据的代码和部分的业务代码交织在一起,维护非常不便。
所以,结论是此种设计模型已经被淘汰没人使用了。
下图展示 Model1 模型的执行过程:
Model2 模型
Model2 模型是在 Model1 的基础上进行改良,它是 MVC 的模型的一个经典应用。它把处理请求和展示数据进
行分离,让每个部分各司其职。此时的 JSP 已经就是纯粹的展示数据了,而处理请求的事情交由控制器来完成,使
每个组件充分独立,提高了代码可重用性和易维护性。下图展示的就是 Model2 模型:
MVC 模型的优略分析
MVC 模型的优势
第一:清晰的职责划分。
第二:每个组件作用独立。有利于代码的重用。
第三:由于可重用性强,所以后期维护起来方便。
第四:任何项目都适用(现在没必要照本宣科的说什么适用于大型项目,其实中小型项目的表现层也可以采用
此种模型来开发,并且更易于后期的扩展,即二次开发)
MVC 模型的弊端
任何事情都是有其两面性,MVC 模型也并不是全方位优秀的设计模型。它的弊端体现在:
第一:展示数据响应速度慢(这里讨论的是 JSP。因为 jsp 要经过翻译成 java,编译成 class,然后展示)
第二:对开发人员的要求高,需要合理的设计和严谨的架构。
第三:异步交互并不方便(因为响应回 ajax 引擎之后的数据处理,需要有 dom 编程的功底)
基于异步请求的 MVVM 模式
它全称是 Model View VielModel。是针对 mvc 模型的再次改良,不过只改良了展示数据的部分。
(Controller 的再次优化交给了框架,Model 部分已经无需再优化)
在上一小节,我们提出了异步交互不变的弊端,这主要是在异步展示数据时,javascript 的逻辑处理和数据
显示交织在了一起,当我们想进行调整时,需要阅读大量的代码,给后期维护造成了影响。而 MVVM 它把 javascript
的逻辑处理和数据展示分开,可以让使用者在后期维护时,针对不同的需求进行调整。例如:如果是逻辑部分需要
处理,则修改逻辑部分代码。如果是数据显示位置需要调整,则修改展示部分的代码,使前端展示更加灵活,也更
加合理。