当前位置:网站首页>MVC模式和三层架构
MVC模式和三层架构
2022-07-30 20:17:00 【陈毓辰】
MVC模式和三层架构
MVC 模式和三层架构是一些理论的知识,将来我们使用了它们进行代码开发会让我们代码维护性和扩展性更好。
MVC模式
MVC是一种分层开发的模式,其中:
- M:Model,业务模型,处理业务
- V:View,视图,界面展示
- C:Controller,控制器,处理请求,调用模型和视图

控制器(serlvet)用来接收浏览器发送过来的请求,控制器调用模型(javaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后在交由视图(JSP)进行数据展示。
MVC好处:
职责单一。每个角色做它自己的事,各司其职。
有利于分工协作。
有利于组件重用
三层架构
三层架构是将我们的项目分成了三个层面,分别是数据层,业务逻辑层,数据访问层。
- 数据访问层:对数据库的CRUD基本操作
- 业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能。例如
注册业务功能,我们会先调用数据访问层的selectByName()方法判断该用户名是否存在,如果不存在再调用数据访问层的insert()方法进行数据的添加操作 - 表现层:接收请求,封装数据,调用业务逻辑层,响应数据
而整个流程是,浏览器发送请求,表现层的Servlet接收请求并调用业务逻辑层的方法进行业务逻辑处理,而业务逻辑层方法调用数据访问层方法进行数据的操作,依次返回到serlvet,然后servlet将数据交由 JSP 进行展示。
三层架构的每一层都有特有的包名称:
- 表现层:
com.itheima.controller或者com.itheima.web - 业务逻辑层:
com.itheima.service - 数据访问层:
com.itheima.dao或者com.itheima.mapper
后期我们还会学习一些框架,不同的框架是对不同层进行封装的
MVC和三层架构
通过 MVC 和 三层架构 的学习,有些人肯定混淆了。那他们有什么区别和联系?
如上图上半部分是 MVC 模式,上图下半部分是三层架构。 MVC 模式 中的 C(控制器)和 V(视图)就是 三层架构 中的表现层,而 MVC 模式 中的 M(模型)就是 三层架构 中的 业务逻辑层 和 数据访问层。
可以将 MVC 模式 理解成是一个大的概念,而 三层架构 是对 MVC 模式 实现架构的思想。 那么我们以后按照要求将不同层的代码写在不同的包下,每一层里功能职责做到单一,将来如果将表现层的技术换掉,而业务逻辑层和数据访问层的代码不需要发生变化。
边栏推荐
- 银行数据资产转换能力弱?思迈特软件助力解决银行困境
- el-input can only input integers (including positive numbers, negative numbers, 0) or only integers (including positive numbers, negative numbers, 0) and decimals
- MySQL (2)
- Apple Silicon配置二进制环境(一)
- MySQL database master-slave configuration
- [NISACTF 2022]下
- Flex布局详解
- Database indexes: indexes are not a panacea
- Running the evict task with compensationTime
- MySQL kills 10 questions, how many questions can you stick to?
猜你喜欢

MySQL database master-slave configuration

Maxwell 一款简单易上手的实时抓取Mysql数据的软件

如何优化OpenSumi终端性能?

WPS没有在任务栏显示所有窗口选项怎么回事?
Typora设置标题自动标号

Face-based Common Expression Recognition (2) - Data Acquisition and Arrangement

vlookup函数匹配不出来只显示公式的解决方法
![[NISACTF 2022]下](/img/f7/264fbbf3ffc986b9759912c310a080.png)
[NISACTF 2022]下

推荐系统-排序层:排序层架构【用户、物品特征处理步骤】

普通的int main(){}没有写return 0;会怎么样?
随机推荐
基于人脸的常见表情识别——模型搭建、训练与测试
YOLO V3详解
Scala类中的属性
【回归预测-lssvm分类】基于最小二乘支持向量机lssvm实现数据分类代码
【视频】极值理论EVT与R语言应用:GPD模型火灾损失分布分析
OSS simply upload pictures
推荐系统:开源项目/工具【谷歌:TensorFlow Recommenders】【Facebook:TorchRec】【百度:Graph4Rec】【阿里:DeepRec和EasyRec】
MySQL的Replace用法详解
Based on the face of the common expression recognition - model building, training and testing
365天挑战LeetCode1000题——Day 044 按公因数计算最大组件大小 并查集
网络安全实验环境搭建
MySQL_关于JSON数据的查询
MySQL (2)
普通的int main(){}没有写return 0;会怎么样?
WPS没有在任务栏显示所有窗口选项怎么回事?
推荐系统:评估指标【离线评估指标:RMSE(均方根误差)、AUC、准确率、召回率、F1】【在线评估:A/B测试】【一般要求响应时间<0.5s】
jOOQ是如何设计事务API(详细指南)
倾斜文档扫描与字符识别(opencv,坐标变换分析)
[PM only] Quickly count who else in the team has not registered and reported information, and quickly screen out the members of their own project team who have not completed the list of XXX work items
TensorFlow2: Overview