深入MVC模式和三层架构

news2024/11/25 16:56:57

MVC模式

MVC 是一种分层开发的模式,其中:

  • M:Model,业务模型,处理业务

  • V:View,视图,界面展示

  • C:Controller,控制器,处理请求,调用模型和视图

在这里插入图片描述

控制器(serlvlet)用来接收浏览器发送过来的请求,控制器调用模型(JavaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后再交由视图(JSP)进行数据展示。

MVC 好处:

  • 职责单一,互不影响。每个角色做它自己的事,各司其职。

  • 有利于分工协作。

  • 有利于组件重用

三层架构

三层架构是将我们的项目分成了三个层面,分别是 表现层业务逻辑层数据访问层

在这里插入图片描述

  • 数据访问层:对数据库的CRUD基本操作
  • 业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能。例如 注册业务功能 ,我们会先调用 数据访问层selectByName() 方法判断该用户名是否存在,如果不存在再调用 数据访问层insert() 方法进行数据的添加操作
  • 表现层:接收请求,封装数据,调用业务逻辑层,响应数据

而整个流程是,浏览器发送请求,表现层的Servlet接收请求并调用业务逻辑层的方法进行业务逻辑处理,而业务逻辑层方法调用数据访问层方法进行数据的操作,依次返回到serlvet,然后servlet将数据交由 JSP 进行展示。

三层架构的每一层都有特有的包名称:

  • 表现层: com.xiaowei.controller 或者 com.xiaowei.web
  • 业务逻辑层:com.xiaowei.service
  • 数据访问层:com.xiaowei.dao 或者 com.xiaowei.mapper

后期我们还会学习一些框架,不同的框架是对不同层进行封装的

在这里插入图片描述

MVC 和 三层架构的联系

通过 MVC 和 三层架构 的学习,有些人肯定混淆了。那他们有什么区别和联系?

在这里插入图片描述

如上图上半部分是 MVC 模式,上图下半部分是三层架构。 MVC 模式 中的 C(控制器)和 V(视图)就是 三层架构 中的表现层,而 MVC 模式 中的 M(模型)就是 三层架构 中的 业务逻辑层 和 数据访问层。

可以将 MVC 模式 理解成是一个大的概念,而 三层架构 是对 MVC 模式 实现架构的思想。 那么我们以后按照要求将不同层的代码写在不同的包下,每一层里功能职责做到单一,将来如果将表现层的技术换掉,而业务逻辑层和数据访问层的代码不需要发生变化。

🎉文章到这里就结束了,感谢诸佬的阅读。🎉

💕欢迎诸佬对文章加以指正,也望诸佬不吝点赞、评论、收藏加关注呀😘

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习中的卷积操作

本文从信号处理中的互相关运算引入深度学习中的卷积。 然后介绍了不同的卷积类型,以及如何在pytorch中使用这些卷积层。 (在看pytorch文档中的Conv1D/2D/3D的时候感到比较困惑,又很好奇深度学习中各种各样的卷积操作。于是结合整理几乎包含深…

Linux软硬链接与动静态库

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、创建软硬链接二、软硬链接①软链接②硬链接③硬链接的用处④软硬链接的区别三、库的作用①库与为什么用库②动静态库的加载过程四、动静…

大数据分析如何进行日志采集

最近经常和技术大牛在交流,每次的碰撞都会让我产生更多的想法。例如这次谈到的,某企业信息化用了二三十种的公有云服务、有二十多种业务系统的数据库使用了同一个物理库、云产品的稳定性是值得肯定的。今天我们就来谈一谈日志在数据库中的作用以及如何采…

[附源码]Python计算机毕业设计SSM基于java语言的在线电子书阅读系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

基于jsp+mysql+ssm小熊猫水果管理系统-计算机毕业设计

项目介绍 小熊猫水果管理系统是水果商业贸易中的一条非常重要的道路,可以把其从传统的实体模式中解放中来,网上购物可以为消费者提供巨大的便利。通过小熊猫水果管理系统这个平台,可以使用户足不出户就可以了解现今的流行趋势和丰富的水果信…

在中国程序员能不能干一辈子?

在中国程序员当然能干一辈子,因为35岁的程序员已经自动死亡,全网销声匿迹,查无此人了,这辈子已经玩完了(雾 开个玩笑,就是看够了那些焦虑文学,我只想说: 程序员到35岁、45岁、55岁&…

【LeetCode】1697. 检查边长度限制的路径是否存在

题目描述 给你一个 n 个点组成的无向图边集 edgeList ,其中 edgeList[i] [ui, vi, disi] 表示点 ui 和点 vi 之间有一条长度为 disi 的边。请注意,两个点之间可能有 超过一条边 。 给你一个查询数组queries ,其中 queries[j] [pj, qj, limi…

外部注意力机制与内部注意力机制

自注意力是注意力机制的一种特殊情况,其核心思想为通过计算特征内部元素之间的联系来获得大范围内的依赖关系。而在外部注意力中,key被拿到了网络外部,因此可以习得数据集的全局状况。 自注意力机制中,输入特征F被投射到query矩阵…

Qt扫盲-QAbstractSlider理论总结

QAbstractSlider理论总结1. 概述2. 常用属性3. 信号1. 概述 QAbstractSlider 其实就是 QScrollBar, QSlider and QDial 的父类,也就是抽象类定义了Slider这种控件的一些公共属性,其实就是一个抽象滚动条的主要属性。 就比如一个具体的滑动条&#xff0c…

服务器load高问题定位和优化

服务器开发系列 文章目录服务器开发系列前言一、原因分析与定位?总结前言 什么是Load?什么是Load Average?   Load 就是对计算机干活多少的度量(WikiPedia:the system Load is a measure of the amount of work that a comput…

isaac gym(二)仿真setup(代码齐全)

目录 .1 Simulation Setup .2 Creating a Simulation 2.1 Simulation Parameters 2.1.1 Up Axis 2.2 Creating a Ground Plane .3 Loading Assets .4 Environments and Actors 4.1 env 4.2 actors 4.3 Test .5 Running the Simulation .6 Adding a Viewer ​编辑 .7 Th…

03_1排序算法:冒泡排序、选择排序、插入排序

开始系统学习算法啦!为后面力扣和蓝桥杯的刷题做准备!这个专栏将记录自己学习算法是的笔记,包括概念,算法运行过程,以及代码实现,希望能给大家带来帮助,感兴趣的小伙伴欢迎评论区留言或者私信博…

专访 | 刘乔升:开源是人类智力劳动最好的组织形式

OpenMLDB: 可以请你先自我介绍一下吗? 刘乔升: 我叫刘乔升,来自复旦大学,就读于软件工程专业,是 2022 开源之夏 OpenMLDB Go SDK 项目的贡献者。在参加本届开源之夏活动前,我就有参加过一些开源…

自定义maven骨架

目录 一、自定义maven骨架 1、先创建一个新的工程、添加你需要的结构目录及pom所需要的依赖文件,以这个工程为模板,创建框架 2、添加在pom文件中添加依赖,com.test文件中这个坐标与maven仓库相对应 3、点击Edit....会有一个弹窗 4、点击加…

如何在SpringBoot中设置HTTP缓存,你知道么?

在工作之余阅读缓存相关的书籍时,看到了http缓存相关的知识,HTTP 缓存机制是一个 web 性能优化的重要手段,无论是做前端还是做web后台,都可能会用得到它,应该是知识体系库中的一个基础环节,以前这一块学的不…

TAPD新增需求自动写入腾讯文档

【实现效果:】TAPD新增需求/缺陷,可以自动写入腾讯文档智能表,方便通过腾讯文档灵活管理自己的项目排期,并且通过不同的视图效果,实现简单的需求统计/分组迭代,通过数据关联及时跟进延期项目。 【准备工作…

引用类型 - JavaScript 数组对象、遍历、复制、冒泡排序、选择排序、数组方法、数组去重

写在前面 哎呀呀,每次都是要沉淀好久好久才能更一篇文章…基本上半个月都很难出一篇,但还是想把这个系列做起来,主要是为了记录自己学习和开发的过程,以便在面试的时候讲项目,能说得头头是道(◍•ᴗ•◍) 马上就要开…

Clickhouse

目录 Clickhouse简介 整体架构 数据接入层 数据存储层 数据服务层 数据应用层 Clickhouse简介 目前企业用户行为日志每天百亿量级,虽然经过数仓的分层以及数据汇总层通用维度指标的预计算,有些个性化的分析场景还是需要直接编写程序或sql查询&…

python人工智能学习需要学什么?

前言 如果要从科技领域找出最大的变化和革新,那么我们很难不说到“人工智能”这个关键词。人工智能催生了大量新技术、新企业和新业态,为个人、企业、国家乃至全球提供了新的经济增长点,上到谷歌、苹果、百度等巨头,下到各类创业…

发布-订阅模式解读

发布-订阅模式 先简单说一下发布订阅模式各个组件的定义: 发布者 Publisher : 状态改变时 , 向 消息中心 发送事件 ; 订阅者 Subscriber : 到 消息中心 订阅自己关心的事件 ; 消息中心 : 负责维护一个 消息队列 , 根据 消息类型 将 消息 转发给 对应的 订阅者 ; 下面按照该…