MVC模式和三层架构

2023-10-27

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 模式 实现架构的思想。 那么我们以后按照要求将不同层的代码写在不同的包下,每一层里功能职责做到单一,将来如果将表现层的技术换掉,而业务逻辑层和数据访问层的代码不需要发生变化。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC模式和三层架构 的相关文章

  • 外观设计模式

    外观设计模式 根据实际案例分析外观模式 Facade 示例 业务与设计模式落地案例 根据实际案例分析外观模式 Facade 案例 假设一个放电影功能 在播放电影时 需要放下窗帘 打开空调 打开播放机 打开音响 考虑用户观影时间较长时 提供暂
  • 解决request.getServletContext()方法报红问题

    getServletContext 方法是Servlet3 0添加的 所以需要引入3 0以上的jar包
  • 什么是Servlet容器?

    在本文中 我写了一些关于Web服务器 Servlet容器以及它与JVM的关系的基本概念 我想表达的是 Servlet容器也仅仅不过是一个Java程序 1 什么是Web服务器 想要知道什么是Servlet容器 我们首先要知道什么是Web服务器
  • 如果老板要求你的系统接入春晚大流量活动,你会心慌慌吗?

    目录 回头看看 原始系统技术架构 基于CDN的活动静态页面缓存方案 基于Nginx Tomcat Redis的多级缓存方案 超高并发写请求RocketMQ削峰填谷方案 系统限流防雪崩体系架构方案 今天给大家分享一个话题 就是如果要是你老板突
  • 小白入门C#初探Web简易页面显示信息小案例

    1 创建新项目 选择ASP NET Core Web应用 模型 视图 控制器 然后点击下一步 然后在项目名称里面填写CSharpDemo 点击下一步 直至创建即可 目录结构 Connected Services 是Visual Studio
  • Mybatis+Servlet+Mysql 整合的一个小项目:对初学者非常友好,有助于初学者很快的上手Java Web

    文章目录 前言 为何要写 目录结构 1 依赖配置 1 1 创建一个web项目 1 2 依赖需求分析 1 3 pom xml 2 配置Mybatis 2 1 mybatis config xml 2 2 UserMapper xml 2 3
  • this调用本类的其他构造器

    Student类 package Java project 1 public class Student private String name private String schoolName public Student public
  • smbms 获取角色操作,角色管理实现

    为了我们职责统一 可以把角色的操作单独放在一个包中 和pojo中的对应 RoleDao 接口 package com Li dao role import com Li pojo Role import java sql Connectio
  • 项目实战之RabbitMQ冗余双写架构

    作者名称 DaenCode gt https blog csdn net 2302 79094329 作者简介 啥技术都喜欢捣鼓捣鼓 喜欢分享技术 经验 生活 人生感悟 尝尽人生百味 方知世间冷暖 所属专栏 项目所感所想 gt https
  • 泛型与反射机制在JDBC和Servlet编程中的实践

    写在前面 泛型与反射是java中的两种强大机制 可以很好的提高代码的灵活性和复用性 本篇文章向大家展现在JDBC和Servlet编程场景下反射和泛型技术的实践 通过灵活使用这两种机制打造 高度可复用的JDBC和Servlet代码 1 JDB
  • 每天花2小时复习Java面试指南,高级架构视频,我进了阿里定级P7

    Java进阶架构师必备 基础 容器 并发 JVM Java8 计算机网络 计算机操作系统 Linux 数据结构 算法 mysql 优化思路 系统设计 分布式 线上问题调优 虚拟机 tomcat 面试指南 工具 添加图片注释 不超过 140
  • 阿里P8架构师带你“一窥”大型网站架构的主要技术挑战和解决方案

    写在前面 传统的企业应用系统主要面对的技术挑战是处理复杂凌乱 千变万化的所谓业务逻辑 而大型网站主要面对的技术挑战是处理超大量的用户访问和海量的数据处理 前者的挑战来自功能性需求 后者的挑战来自非功能性需求 功能性需求也许还有 人月神话 聊
  • 谁能想到Java技术能跟看小说一样学习,用故事给技术加点料

    Java是现阶段中国互联网公司中 覆盖度最广的研发语言 掌握了Java技术体系 不管在成熟的大公司 快速发展的公司 还是创业阶段的公司 都能有立足之地 大家都知道 阿里P7高级技术专家 基本上是一线技术人能达到的最高职级 也是很多程序员追求
  • JavaWeb——第五章 Servlet

    第五章 Servlet 一 Servlet简介 1 1 动态资源和静态资源 1 2 Servlet简介 二 Servlet开发流程 2 1 目标 2 2 开发过程 三 Servlet注解方式配置
  • 浅谈小程序开源业务架构建设之路

    一 业务介绍 1 1 小程序开源整体介绍 百度从做智能小程序的第一天开始就打造真正开源开放的生态 我们的愿景是 定义移动时代最佳体验 建设智能小程序行业标准 打破孤岛 共建开源 开放 繁荣的小程序行业生态 百度智能小程序的生态玩家有三类 分
  • BEV+Transformer感知架构共识下,传感器「火药味」再升级

    高阶智能驾驶战火愈演愈烈 正带动感知方案卷入新一轮军备竞赛 根据高工智能汽车研究院最新发布数据显示 2023年1 9月 中国市场 不含进出口 乘用车前装标配 软硬件 NOA交付新车37 73万辆 同比上年同期增长151 20 未来几年内 N
  • 【技术科普】什么是达芬奇架构?有什么优势?

    芯片架构是指芯片设计的基本结构和组织方式 用于实现各种计算 存储和通信功能 芯片架构通常包括处理器核心 内存 输入输出接口等组成部分 这些部分的设计对芯片性能和功耗有着直接的影响 世界上主流的芯片架构主要包括x86 ARM PowerPC和
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • DockerCompose - 微服务项目部署全过程(最佳实践)

    目录 一 微服务项目部署 1 1 项目介绍 1 2 准备 MySQL 初始化文件 1 3 pom xml 插件 1 4 测试工作 1 5 编写 Dockerflie 文件 1 6 编写 DockerCompose yml 文件 1 7 修改
  • [机缘参悟-132] :《洞见》:为什么佛学是真的 -3- 冥想,洞见自己的内心

    目录 一 佛家修行的方法 二 冥想 2 1 冥想步骤 2 2 冥想的好处 2 3 冥想的方法 一 佛家修行的方法 佛教修行是指追求智慧 慈悲和解脱 以最终实现觉悟和解脱的过程 它包含了广泛的修行方法 以下是一些常见的佛教修行方法 冥想 冥想

随机推荐

  • JVM 与 GC 讲解

    文章目录 一 概述 二 JVM 内存模型 三 GC算法和回收器 1 垃圾回收算法 2 垃圾回收器 四 垃圾回收机制 GC 1 分代垃圾回收机制 2 G1 垃圾回收器 3 FullGC 机制 一 概述 JVM Java Virtual Mac
  • Retrofit2+Rxjava2+Rxandroid+okhttp3+Lifecycle 的MVP网络框架,精简Google官方AAC框架,实现APP生命周期的管理

    一 介绍 目前使用较为广泛的网络请求框架 MVP Retrofit2 okhttp3 Rxjava2 我于2017年也加入了使用行列 在网上找了许多案例 实际项目开发中解决了一些所谓的坑 总结了些内容与大家共享一下 1 什么是MVP 在图中
  • 优惠价,百分比计算,折扣计算,打折计算

    一 优惠价 百分比计算 例如 原价是100元 优惠5 5 5 100 0 05 优惠价 100x5 100x0 05 5 计算得出优惠价是5元 优惠后的价格 原价 优惠价 95 100 5 计算得出优惠后的价格是95元 例如 原价是100元
  • 理解DDoS防护本质:基于资源较量和规则过滤的智能化系统

    本文由 网易云 发布 随着互联网生态逐渐形成 DDoS防护已经成为互联网企业的刚需要求 网易云安全 易盾 工程师根据DDoS的方方面面 全面总结DDoS的攻防对抗 1 什么是DDoS DDoS全称Distributed Denial of
  • steam deck科普、上手教程及模拟器配置指南

    steam deck 前言 早在2021年得时候 坊间就开始流传steam deck这个东西要问世了 但是中途跳了几次票 直到2022年2月 第一批steam deck才正式面向大众玩家 在熟悉steam deck之前 我们有必要了解如下的
  • VS2019 + libcurl5.7.0 + openssl3.0.5 简易编译教程

    VS2019 libcurl5 7 0 openssl编译配置 1 用途 工作用到C 对求高德地图发送https请求 进行逆地址分析 2 文件包下载 2 1 window的openssl3 0 5EXE安装包 链接 exe安装包 2 2 下
  • numpy求平均值

    本文转自链接 https www cnblogs com yibeimingyue p 11413295 html 1 对数组求平均值 import numpy as np a np array 1 2 3 4 print a print
  • C语言问题汇总

    C语言问题汇总 排序方法 冒泡排序 降序排序 作业 从文件中读取内容 字符写入文件 结构体数组 以二进制形式写入文件并读取 将字符串写入文件 并从文件中读取 查找字符在字符串中的位置 字符串链接 不使用strcpy函数 使用strcpy函数
  • 俄罗斯方块C++代码(转载他人代码)

    include
  • (ctf)攻防世界web模块020web2

    题目 首先来到给定的地址 题意很明确 miwen是加密之后的字符串 我们只需要逆向解密出miwen就能得到flag 我们先来代码审计 o strrev str strrev 函数是字符串的倒置 for 0 0 0
  • java.io.IOException: Connection reset by peer问题解决

    java io IOException Connection reset by peer问题解决 今天检查日志 发现 ClientAbortException java io IOException Connection reset by
  • font-spider(字蛛)的正确打开方式

    前言 最近在部署vue项目之后 在打开网页的时候 ttf文件下载时间实在是太久了 在经过合理的运用搜索引擎之后 可能自己的固化思维消化不了大佬们给出的方案 于是在他们的基础之上做了一些小小的改动 便叙文记之 1 引入font spider的
  • BigDecimal 前端丢失精度的问题解决

    问题描述 后端数字是85 00 但是前端显示85 SQL语句 select cast 字段 as decimal 10 2 value 这里已经保留两位小数了 from table where 实体类 这里是关键 注意不是 JSONFiel
  • java 的JDBC操作

    JDBC java数据库连接 提供了一套数据库操作标准 这些标准需要各个数据库厂商去实现并提供一个驱动程序 目前常见的4类JDBC驱动程序 JDBC ODBC 直接利用微软的ODBC进行数据库连接操作 性能低 一般不推荐 JDBC本地驱动
  • 前端笔记

    发布在github的笔记 下载慢 所以我放到csdn上面了 源地址 https github com overcomputer JavaScript 源地址 关注 大佬发布在github的笔记 下载慢 所以我放到csdn上面了 源地址 ht
  • Android HandlerThread 总结使用

    前言 以前我在 Android Handler Loop 的简单使用 介绍了子线程和子线程之间的通信 很明显的一点就是 我们要在子线程中调用Looper prepare 为一个线程开启一个消息循环 默认情况下Android中新诞生的线程是没
  • 一招教你学会使用AD更改PCB板子尺寸

    使用原理图生成PCB后 Altium Designer会根据原理图大小自动生成一块黑色区域 还有一个在禁止布线层的方框 还有两段标注板子大小的线 下面说一下如何更改黑色区域的大小 还有如何精确确定板子尺寸 比如使其为长宽都为整数 1 调整
  • 【浙工商期末报告】研一R语言期末作业(源代码分享)

    目录 研一R语言期末作业 源代码分享 一 作业回顾 1 1 计算t值 1 2 绘图 二 结果展示 2 1 计算t值 2 2 绘图 三 源代码分享 一 作业回顾 1 1 计算t值 1 2 绘图 二 结果展示 2 1 计算t值 1 1 9379
  • 【Flutter 2-9】Flutter手把手教程UI布局和Widget——弹性布局控件Flexible

    作者 弗拉德 来源 弗拉德 公众号 fulade me Flexible Flexible可以帮助Row Column Flex的子控件充满父控件 它的用法很灵活 也具有权重的属性 跟Flexible相类似的控件还有Expanded 先来看
  • MVC模式和三层架构

    MVC模式和三层架构 MVC 模式和三层架构是一些理论的知识 将来我们使用了它们进行代码开发会让我们代码维护性和扩展性更好 MVC模式 MVC是一种分层开发的模式 其中 M Model 业务模型 处理业务 V View 视图 界面展示 C