MVC 设计概述

在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1:

15.png

出现的弊端:

(1)JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起
(2)要求开发者不仅要掌握 Java ,还要有高超的前端水平
(3)前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试
(4)代码难以复用

正因为上面的种种弊端,所以很快这种方式就被 Servlet + JSP + Java Bean 所替代了,早期的 MVC 模型(Model2)就像下图这样:

16.png

首先用户的请求会到达 Servlet,然后根据请求调用相应的 Java Bean,并把所有的显示结果交给 JSP 去完成,这样的模式我们就称为 MVC 模式。

M 代表 模型(Model)
模型是什么呢? 模型就是数据,就是 dao,bean

V 代表 视图(View)
视图是什么呢? 就是网页, JSP,用来展示模型中的数据

C 代表 控制器(controller)
控制器是什么? 控制器的作用就是把不同的数据(Model),显示在不同的视图(View)上,Servlet 扮演的就是这样的角色。

Spring MVC 的架构

为解决持久层中一直未处理好的数据库事务的编程,又为了迎合 NoSQL 的强势崛起,Spring MVC 给出了方案:

17.png

传统的模型层被拆分为了业务层(Service)和数据访问层(DAO,Data Access Object)。 在 Service 下可以通过 Spring 的声明式事务操作数据访问层,而在业务层上还允许我们访问 NoSQL,这样就能够满足异军突起的 NoSQL 的使用了,它可以大大提高互联网系统的性能。

SpringMVC 特点:

(1)结构松散,几乎可以在 Spring MVC 中使用各类视图
(2)松耦合,各个模块分离
(3)与 Spring 无缝集成