MVC模式
MVC 是一种分层开发的模式,其中:
- M:Model,业务模型,处理业务
- V:View,视图,界面展示
- C:Controller,控制器,处理请求,调用模型和视图
最典型的MVC就是JSP + servlet + javabean的模式,这里使用此模式来说明,控制器(servlet)用来接收浏览器发送过来的请求,控制器调用模型(JavaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后再交由视图(JSP)进行数据展示。
MVC 好处:
- 职责单一,互不影响。每个角色做它自己的事,各司其职。
- 有利于分工协作。
- 有利于组件重用
Spring MVC框架
首先说下Spring框架,spring是一个轻量级开源的JAVA EE框架,是针对bean的生命周期进行管理的一个轻量级容器。
Spring MVC框架是一个基于Spring框架且实现了MVC模式的Java Web的框架,这里要注意,Spring MVC和Spring一样,是一个框架,也有很多人将Spring MVC视为Spring的一部分。
三层架构
三层架构是将我们的项目分成了三个层面,分别是 表现层 、 业务逻辑层 、 数据访问层。
- 数据访问层:对数据库的CRUD基本操作
- 业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能。
- 表现层:接收请求,封装数据,调用业务逻辑层,响应数据
三者区别
首先MVC是一种软件设计模式,Spring MVC是一种框架,三层架构是一种软件架构方式。
在软件工程里,框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。
三者联系
首先说MVC和Spring MVC之间的关系,Spring MVC是对于MVC设计模式的一种实现,这种实现是基于Spring的。
接下来说MVC和三层架构之间的关系:
如上图上半部分是 MVC 模式,上图下半部分是三层架构。 MVC 模式 中的 C(控制器)和 V(视图)就是 三层架构 中的表现层,而 MVC 模式中的 M(模型)就是 三层架构 中的 业务逻辑层和数据访问层。
再看下Spring MVC和三层架构之间的关系:
尽管MVC模式中的M包括了三层架构的业务逻辑和数据访问层,但是Spring MVC里边的M却不能这样理解。
Spring MVC一般视为表现层的框架技术,因为Spring MVC的使用了Spring框架,Spring框架的核心思想是控制反转,在三层架构每一层里边都可能会用到控制反转,这里的Spring MVC仅仅在表现层发挥了控制反转的功能,因此开发项目时,项目通常有两个IOC容器,也就是Spring容器和Spring MVC容器。
Spring框架负责除了表现层之外的bean的控制,在数据访问层往往使用MyBatis,因此就诞生了大名鼎鼎的SSM(Spring+SpringMVC+MyBatis)框架。
结语
模式,框架,架构这些名词我们常听,也常说,但是很多使用是错误的,这三者有交集,也有差异,对于理论的学习虽然不能直接表现在技术上面,但其影响是潜移默化的。