MVC架构和SSM框架的个人理解


前言

学习完SSM框架之后, 对以前JavaWeb的原生方式, 以及对应的MVC架构有了新的理解, 特此总结.


这一篇只谈架构, 不谈技术细节

一、原生JavaWeb对应MVC架构

先谈一下MVC
什么是MVC ? :
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,(下图来自B站up主 我是莫提)
在这里插入图片描述

以前在JavaWeb阶段, MVC的实现主要是用以下方式实现的:

M(Model) : pojo(实体类), 业务层(在项目中常常被命名为service包), dao(JDBC, Druid)等
V(View) : JSP , HTML
C(Controller) : Servlet
在这里插入图片描述

其实, 我们不用学SSM框架, 也能用JavaWeb的那些技术构建一个B/S架构的项目, 而且项目是遵循MVC架构的. 学了SSM框架, 只不过是在MVC这三个层面, 对应替换了原生JavaWeb的那些技术而已.

二、SSM框架对应MVC架构

M(Model) : dao层和service层就是MVC中的M层 -> dao层是MyBatis做的事 , Spring会控制service层
V(View) : jsp和html组成了MVC的V(View)层, 负责进行数据展示 -> SpringMVC建立起V和C的桥梁
C(Controller) : Controller包下对应的MVC的C(Controller)层,该包下都是一些servlet -> SpringMVC做的事
那么Spring做的事呢? 就是整合SpringMVC和MyBatis, 同时控制Service层
下图很好的表示了SSM框架对应MVC架构的关系(图来源于黑马程序员)

在这里插入图片描述

第一块内容(MyBatis):

DAO层就是定义了数据库的操作, 里面大都是增删改查的代码和方法

DAO, M(module)层 -> 通通用的是MyBatis框架

第二块内容(Spring):

用到的配置文件: SSM中, 常用配置文件的头以及他们相互之间关系

Service层, 负责调用dao层.前面又会有层(Controller层)负责调用业务层

业务层不单单调用dao层的方法, 每个业务层方法还会有它自己的逻辑.执行了一些其他的操作,
这个逻辑用AOP的方式横切进去就能搞定

MyBatis整合Spring框架.配置文件是spring-dao.xml(名字可以随便取), 用到的技术是MyBatis-Spring, 它需要在pom.xml中导入坐标:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.2</version>
</dependency>

Spring要整合3个地方:
一个是dao层. 用到MyBatis-Spring
另一个要整合的地方就是Service层. 因为要配置事务.
最后一个要整合的地方是SpringMVC
Spring就是个大杂烩, 用来整合 IOC和AOP, 管理所有的bean的生命周期行为, 以及整合MyBatis和SpringMVC.

第三块内容(SpringMVC):

这里是对应的MVC的C(Controller层), 在项目中位于Controller包下. 该包下都是一些Servlet

要想使用SpringMVC, 首先需要将普通项目转换成Web项目.

鼠标移动到idea左侧项目树, 右键要转换的模块 -> Add Framework Support

然后进行如下图所示的配置:
在这里插入图片描述

总结

我们开发的B/S架构的系统, 一般流程是这样的:

坐在电脑前的你->访问前端->前端和Controller交互->Controller调用Service->Service调Dao->Dao连接数据库

看懂了SSM框架对应的MVC架构的关系, 我们就能总结出来一些设计模式的原则. 也就是说, 来了新业务,从下往上写比较好,先写Dao层然后-> Service-> controller 这样可以避免重复代码。
但是设计,架构的话一般是自顶向下。

以上是我的个人见解,欢迎大家讨论,指正。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值