三层架构与MVC模式

news2024/11/27 1:36:20

MVC模式

MVC模式是软件工程中常见的一种软件架构模式,该模式把软件系统(项目)分为了三个基本部分:模型(Model)、视图(View)、控制器(Controller)

视图(View)

 负责界面的显示,以及与用户的交互功能,例如表单、网页等

控制器(Controller)

控制器用来接收用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和任何处理。只是接收请求并决定调用哪个模型结构去处理请求,然后再确定用哪个视图来显示返回的数据。

可以理解为一个分发器,用来决定对于视图发来的请求,需要用哪个模型进行处理,以及处理完成后需要跳回到哪一个视图。即用来连接视图和模型。

模型(Model)

模型持有所有的数据、状态和程序逻辑。模型接收视图数据的请求,并返回最终处理结果。

MVC模式的流程如下:浏览器通过视图向控制器发出请求,控制器收到请求后通过选择模型进行处理,处理完请求后再转发到视图,进行视图界面的渲染并做出最终响应。

 在MVC模式中,视图view可以用JS/HTML/CSS实现,模型Model可以用JavaBean实现,而控制器Control可以用Servlet实现。


三层架构

三层指的是:表示层(USL , User Show Layer)、业务逻辑层(BLL , Business Logic Layer)和数据访问层(DAL , Data Access Layer)。三层中使用的数据,是通过实体类来传递的。

 数据访问层

与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。

业务逻辑层

位于三层的中间层,起到数据交换的承上启下作用,用于对业务逻辑的封装。主要负责对数据层的操作,实现业务的逻辑。

表现层

主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。


优点与缺点

优点:

  • 1、结构清晰、耦合度低
  • 2、可维护性高,可扩展性高
  • 3、利于开发任务同步进行, 容易适应需求变化
  • 4、增强可重用性、移植性

缺点:

  • 降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成
  • 增加了代码量,增加了工作量

前后端分离

前后端彻底分离这一时期,前端的范围被扩展,controller层也被认为属于前端的一部分。在这一时期:

  • 前端负责View和Controller层
  • 后端负责Model,业务/数据处理等

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

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

相关文章

【解析excel】利用easyexcel解析excel

【解析excel】利用easyexcel解析excel POM监听类工具类测试类部分测试结果备注其他 EasyExcel Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题&…

【代码随想录 | Leetcode | 第十一天】字符串 | 反转字符串 | 反转字符串 II | 替换空格 | 反转字符串中的单词 | 左旋转字符串

前言 欢迎来到小K的Leetcode|代码随想录|专题化专栏,今天将为大家带来字符串~反转字符串 | 反转字符串 II | 替换空格 | 反转字符串中的单词 | 左旋转字符串的分享✨ 目录 前言344. 反转字符串541. 反转字符串 II剑指 Offer 05. 替换空格151. 反转字符串中的单词剑…

Linux:centos7:zabbix4.0(安装,监控》Linux》Windows》网络设备)

环境 centos7(zabbix服务器)内网ip:192.168.254.11 外网ip:192.168.0.188(去网络yum源下载) centos7(被监控端)内网ip:192.168.254.33win10(被监控端&…

怎么学习Java安全性和加密相关知识?

学习Java安全性和加密相关知识是非常重要的,特别是在开发涉及敏感数据的应用程序时。以下是学习Java安全性和加密的一些建议: 基础知识: 首先,了解计算机网络安全的基本概念,包括加密、解密、哈希算法、数字签名等。…

图书管理系统--进阶(动态开辟内存 + 保存数据到文件)

文章目录 动态开辟内存优化改进图书管理系统类型改进初始化图书管理系统的函数改进添加图书信息的函数增加销毁图书信息管理系统的函数 保存数据到文件优化保存图书信息管理系统数据到文件读取数据到图书信息管理系统 完整的代码展示 在 C语言实现图书管理系统的所有基本功能详…

当下哪些行业最容易被AI替代?

随着人工智能(AI)技术的不断发展,越来越多的行业受到AI的冲击。从工业制造到为人服务,在我们许多未察觉的领域,AI正在逐渐取代传统的人类劳动力。那么哪些行业最容易被AI替代呢? 一、制造业和生产线 制造业…

overflow-x:scroll不生效

父元素的宽度一定要设置,不要使用100%, 使用100%可能会导致父跟子元素的宽度一样, 从而无法滑动 父元素: overflow-x:scroll 根据gpt的答案:

Android 6.0 版本中插件化沙盒环境下IllegalArgumentException Unknown package异常

近期从bugly上发现某个渠道包报错 Unknown package异常问题,经过framework层源码分析,发现是插件化api兼容性问题,该渠道包是运行在沙盒环境(233乐园)。 现象 java 报错栈: 其他设备,次数信息:目前发生android 6.0系…

QT【day2】

完善登录框&#xff1a; //main头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QDebug> //信息调试类&#xff0c;用于打印输出 #include<QIcon> //图标头文件 #include<QPushButton> //按钮类头文件 #include…

Web_python_template_injection

考察模版Python flask的模版注入&#xff0c;页面没有回显&#xff0c;只有一段字符串&#xff0c;尝试直接利用Python传参 完全没回显 但是如果直接访问的话&#xff0c;就会利用url报错&#xff0c;将结果给执行带出来&#xff0c;那说明我就可以直接利用这个性质进行ssti模版…

SQL注入--题目

联合查询注入&#xff1a; bugku-这是一个神奇的登录框 手工注入&#xff1a; 点吧&#xff0c;输入0’发现还是&#xff1a; 输入0" 发现报错&#xff1a; 确定可以注入&#xff0c;判断字段有多少个 0"order by 1,2,3# 发现&#xff1a; 说明有两列。 输入 0&qu…

赞同高频接广?品牌复投成B站粉丝催更利器

一直以来&#xff0c;电商行业是B站公开的前五大广告主之一。今年618电商节期间B站发布数据称&#xff0c;B站电商类广告收入迎来爆发&#xff0c;同比增长超400%。其中&#xff0c;站内带货视频数量同比增长近8倍&#xff0c;带货直播场次同比增长近7.5倍。 B站作为中长视频为…

只需要5个技巧,就能让你的独立站更吸引客户

人类很简单——我们都更喜欢第一眼看起来令人心情愉悦的的东西。独立站卖家自由度更高&#xff0c;可以添加很多令人惊叹的产品、调整更优惠的价格并设置多种语言选择来吸引访问者购买&#xff0c;但网站的设计仍然是大多数访问者判断独立站品牌的第一要素。根据可靠调研得知&a…

Linux基础IO(二)

Linux基础IO(二) 文章目录 Linux基础IO(二)缓冲区为什么会有缓冲区缓冲区刷新策略系统有缓冲区吗&#xff1f; 文件系统什么是inode 软硬链接软链接硬链接热知识总结 文件的三个时间动静态库什么是动静态库怎么理解动静态库原理使用 制作一个库前置准备自制静态库使用自制的静态…

根据索引值计算item所在行列索引序号

getRowColIndex(itemIndex 0, colCount 3) {//必选参数&#xff1a;itemIndex是当前元素的索引值&#xff0c;从0开始计算&#xff08;如果是从1开始&#xff0c;则需将传入值-1&#xff0c;即itemIndex--&#xff09;//必选参数&#xff1a;colCount是每一行显示多少个元素r…

使用Anaconda创建虚拟环境并添加到Jupyter notebook内核

1.修改虚拟环境的存放位置&#xff08;可选&#xff09; Windows&#xff1a;打开文件C:\Users\DongZhaoCheng(对应到你本人的用户名)\.condarc,添加envs_dirs: [D:\003SoftDevTool\anaconda_env]&#xff08;对应到你自己执行的目录&#xff09;,保存退出 2.进入系统终端创建…

Windows 11隐藏功能大揭秘

Windows 11隐藏功能大揭秘&#xff01;你了解多少&#xff1f; 不知道你是否已经升级到了Windows 11系统&#xff1f;毕竟&#xff0c;这个备受期待的新系统已经发布有一段时间了&#xff0c;相信大多数用户都已经开始尝试使用微软的新系统了吧。但是&#xff0c;你真的熟悉它…

查看进程环境变量

1、Linux 每一个进程的环境变量存储在 /proc/$PID/environ 中。 而 PID 可用通过 ps / jps(java 进程) 等命令查看。 ps -ef | grep xxxjps文件 /proc/$PID/environ 变量以namevalue的形式描述。多个变量之间由 null&#xff08;‘\0’&#xff09;分隔&#xff0c;为了便于阅…

嵌入式和 Java 走哪条路?

JAVA和嵌入式各有千秋&#xff0c;看个人取舍。 想挣钱挣得快一点&#xff0c;挣得多一点&#xff0c;那就选Java&#xff0c;但有中年危机。 想细水长流一点的&#xff0c;选嵌入式&#xff0c;挣钱挣得慢一点&#xff0c;也稳一点&#xff0c;挣得久一点&#xff0c;中年危…

Beamer学习手册

Beamer学习手册 ZJU Beamer模板解读参考链接 谨以本文记录一下学习beamer的过程 本文基于 Overleaf 的 ZJU Beamer模板 进行学习并修改模板&#xff0c;感谢前辈的贡献&#xff01; ZJU Beamer模板解读 首先在 Overleaf 下载 ZJU Beamer模板 &#xff0c;解压压缩包后&#xf…