三层架构+MVC

news2024/11/15 15:43:14

前言图

在这里插入图片描述
在这里插入图片描述

什么是三层架构

什么是三层架构

什么是系统架构

所谓系统架构是指,整合应用系统程序大的结构。经常提到的系统结构有两种:三层架构与MVC。这两种结构既有区别,又有联系。但这两种结构的使用,均是为了降低系统模块间的耦合度。(注:耦合度相当于复杂度)

什么是三层架构

三层架构是指:视图层(表示层) View、业务逻辑层(服务层,业务层) Service、 与数据访问层(持久层) DAO,它们分别完成不同的功能。(注:DAO不念’到’层)

  • View层:用于接收用户提交请求的代码(注:与用户进行交互)
  • Service层:系统的业务逻辑主要在这里完成(注:增删改查)
  • DAO层:直接操作数据库的代码(注:操作MySql等)

为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象(接口)编程,即上层对下层的调用,是通过接口实现的,而下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换,这就实现了层间解耦合。

在这里插入图片描述
注:开发中,业务才是核心,技术是辅助业务的

注:多表之间有依赖关系, 强关联性就是耦合度

注:如何实现高内聚低耦合:一个类只做一种事,一个方法只做一件事,写且只写一次

什么是MVC模式

什么是MVC模式

MVC,即Model模型、View视图、及Controller控制器。

  • View:视图,为用户提供使用界面,与用户直接进行交互。(注:扮演者->jsp)
  • Model:模型,承载数据,并对用户提交请求进行计算的模块。其分为两类,一类称为数据模型(数据承载Bean),一类称为业务模型(业务处理Bean)。所谓数据承载Bean是指++实体类++,专门用户承载业务数据的,如Student、User等。而业务处理Bean则是指Service或Dao对象,专门用于处理用户提交请求的。(注:数据模型扮演者->JavaBean(实体类,也可写成entity);业务模型扮演者->Service、Dao)
  • Controller:控制器,用于将用户请求转发给相应的Model进行处理,并根据Model的计算结果向用户提供相应响应。(注:扮演者->Servlet)

注:Servlet是服务器小程序用来处理业务逻辑和页面展示–>缺点:高耦合–>所以用JSP(JSP就是Servlet)来降低耦合度,JSP用来处理页面展示,JSP是一门技术,且文件扩展名为:.jsp

MVC架构程序的工作流程

  • 用户通过View页面向服务端提出请求,可以是表单请求、超链接请求、AJAX请求等
  • 服务端Controller控制器接收到请求后对请求进行解析,找到相应的Model对用户请求进行处理
  • Model处理后,将处理结果在交给Controller
  • Controller在接到处理结果后,根据处理结果找到要作为向客户端发回的响应View页面。页面经渲染(数据填充)后,在发出给客户端。

三层架构+MVC示意图

(单体应用)做开发首先是三层架构(视图层,业务逻辑层,数据访问层),其次视图层这一层还要运用MVC模式(将业务逻辑和页面展示分离)

注:MVC模式是应用于视图层(View)的模式

注:MVC模式用来将业务逻辑和页面展示分离

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

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

相关文章

这七个100%提高Python代码性能的技巧,一定要知道

B站|公众号:啥都会一点的研究生 相关阅读 整理了几个100%会踩的Python细节坑,提前防止脑血栓 整理了十个100%提高效率的Python编程技巧,更上一层楼 Python-列表,从基础到进阶用法大总结,进来查漏补缺 Python-元组&…

Web Spider案例 网洛克 第二题 JJEncode加密 练习(六)

文章目录一、资源推荐二、逆向目标三、抓包分析 & 下断分析逆向3.1 抓包分析3.2 下断分析逆向四、本地JS代码调试 & 完整JS加密代码4.1 本地JS代码调试4.2 完整JS加密代码五、python具体实现总结提示:以下是本篇文章正文内容,下面案例可供参考 …

跬智信息全新推出云原生数据底座玄武,助力国产化数据服务再次升级

2月28日,跬智信息(Kyligence)宣布全新推出国产化云原生数据底座开源项目玄武(XUANWU),以助力企业加速数据平台上云,并实现国产化升级。玄武(XUANWU)是在容器化技术上形成…

分层测试(2)单元测试【必备】

1. 什么是单元测试? 对代码中的逻辑隔离的最小代码片段进行测试,验证其逻辑是否符合预期,单元可以是函数,方法,类,功能模块。 2. 单元测试的优点 掌握代码:单元测试允许开发人员了解单元提供…

35岁的测试被裁,公司地位还不如00后...

国内的互联网行业发展较快,所以造成了技术研发类员工工作强度比较大,同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高,超过35岁的基层研发类员工,往往因为家庭原因、身体原因,比较难以跟得上工作…

python公司企业编码条形码二维码生成系统

wx供重浩:创享日记 对话框发送:python编码 免费获取完整源码源文件配置说明教程等 在PyCharm中运行《企业编码生成系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时,只需要输入…

Javascript的API基本内容(四)

一、日期对象 获取时间戳的方法,分别为 getTime 和 Date.now 和 new Date() // 1. 实例化const date new Date()// 2. 获取时间戳console.log(date.getTime()) // 还有一种获取时间戳的方法console.log(new Date())// 还有一种获取时间戳的方法console.log(Date.n…

maven进阶总结

maven进阶总结1. maven之间可以互相导包2. maven的依赖是具有传递性的3. 可选依赖和排除依赖:4. 继承与聚合4.1聚合4.2 继承5. 属性的配置与使用6. 版本管理8. 多环境开发和跳过测试(了解)1. maven之间可以互相导包 从当前maven的pom文件中&…

DNS服务器部署的详细操作(图文版)

DNS服务器的部署 打开虚拟机后查看已经开放的端口,可以看到没有TCP53、UDP53,说明DNS服务端口没有打开 打开我的电脑—双击CD驱动器— 选择安装可选的Windows组件 选择网络服务—域名系统(DNS)— 点击下一步后会弹出如下弹…

Kubernetes08:Controller (有状态应用)

Kubernetes08:Controller 1、无状态和有状态的区别 1)无状态: 认为Pod都是相同的没有顺序要求不用考虑我在哪个node上运行随意进行伸缩和扩展 有状态: 上面的因素都需要考虑到让每个Pod都是独立的,保持Pod启动顺序…

mysql去重查询的三种方法

文章目录前言一、插入测试数据二、剔除重复数据方法1.方法一:使用distinct2.方法二:使用group by3.方法三:使用开窗函数总结前言 数据库生成环境中经常会遇到表中有重复的数据,或者进行关联过程中产生重复数据,下面介…

【API网关】Kong安装和基本操作

文章目录前言一、API网关选型和Kong的安装1. 什么是API网关2. API网关技术选型3. 安装postgresql和migrations4. 安装kong5. 安装konga二、基本的路由转发配置1. kong的8001、8000和1337端口号的关系2. 基本的路由转发配置3. kong集成consul实现服务发现和负载均衡4. kong配置j…

程序员推荐的良心网站合集!

今天来给大家推荐几个程序员必看的国外良心网站合集。 IBM developer 技术性很强的博客网站,网站自带真实示例代码和架构解决方案,大家可以在上面找到适合自己的语言方向开始学习交流。 https://developer.ibm.com/ infoq 技术论坛社区,内…

【JavaScript】根据元素内容遍历元素的方案

▒ 目录 ▒🛫 导读需求1️⃣ jQuery2️⃣ XPATH(document.evaluate)3️⃣ 原生js(querySelectorAll & Array)🛬 文章小结📖 参考资料🛫 导读 需求 因业务需要,根据元…

文献阅读笔记 # 面向大规模多版本软件系统的代码克隆检测加速技术

面向大规模多版本软件系统的代码克隆检测加速技术,方维康 吴毅坚 赵文耘,《计算机应用与软件》复旦大学软件学院、复旦大学上海市数据科学重点实验室2022 April 面向大规模多版本软件系统的代码克隆检测加速技术 摘要 很多代码克隆检测方法主要针对软…

_Linux (网络版计算器简易实现)

文章目录1. 协议2. 网络版计算器简易实现代码链接3. 网络版计算器2-1. 约定的协议方案有两种2-3. 协议代码框架1. 自定义的协议方案2. json(库里的完整协议方案)2-4. send和recv单独使用不安全2-5. 剩余代码写法讲解参考如下:2-6. 代码运行结果示意图&am…

9.5 PIM-SM

实验目的 熟悉PIM-SM的应用场景掌握PIM-SM的配置方法 实验拓扑 实验拓扑如图9-40所示: 图9-40:PIM-SM 实验步骤 (1)配置IP地址 MCS1的配置 MCS1的配置如图9-41所示: 图9-41:配置MCS1的IP地址 R1的配置 …

VMware安装FreeBSD虚拟机

1. 下载FreeBSD镜像地址 国内阿里云下载地址: freebsd-releases-ISO-IMAGES安装包下载_开源镜像站-阿里云 选择自己需要的版本下载。 2. 创建FreeBSD虚拟机 2.1. 选择操作系统类型 2.2. 导入FreeBSD镜像 3. 安装FreeBSD 第1步:保持默认让其自动进入…

复习知识点十之方法的重载

目录 方法的重载 练习1: 练习1: 数组遍历 练习2: 数组的最大值 练习3: 练习4: 复制数组 基本数据类型和引用数据类型 方法的重载 Java虚拟机会通过参数的不同来区分同名的方法 练习1: public class Test4 {public static void main(String[] args) {//调用方法 // …

grid宫格布局新手快捷上手-f

前言 grid 网上有很多,但都是大而全的,感觉新人上手很吃力,本文仅以最快捷的方式进行介绍,如何使用grid宫格布局 本文是新人上手,若想了解更多grid布局,请阅读其他文章 使用 声明布局 display: grid;声…