MVC与三层架构理解

1. JSP的发展

早期只有Servlet,只能使用response输出标签数据,非常麻烦后来。JSP的出现,简化了 Servlet的开发。但是过度的使用JSP,在JSP中写大量的java代码,又前端的页面,造成难以维护,难于分工协作的窘境。
再后来,随着java的web开发的逐步完善,公司的开发需要形成一种规范,来更好的管理和维护代码,借鉴MVC的开发模式,使得程序的设计更加合理性。

JSP(全称JavaServer Pages)是由Sun公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。

JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

使用JSP做一个小小的项目(一)_jsp项目-CSDN博客

2. MVC思想

MVC(Model View Controller)是软件工程中的一种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

MVC每层之间的逻辑关系:

M:Model,模型。 JavaBean

  • 完成具体的业务操作,如:查询数据库,封装对象

V:view视图。JSP、HTML等来进行数据展示

C:Controller控制器。 Servlet

  • 获取View的请求

  • 调用模型将数据交给视图进行展示

控制器Controller 的作用就是将Model 与 View一一对应起来

我们用用户登录这个例子来说明:

View层是index.jsp,Cotroller是/loginServlet,Model是JavaBean对象

用户看到的是JSP展示页面,用户输入数据点击登录按钮时,这是JSP会通过数据共享将请求转发到/loginServlet控制器上

然后控制器再将请求分发到Model上,通过JDBC连接到数据库来查询数据库中是否存在该用户信息。

若存在该用户,则返回信息,让控制器告诉前台页面展示登陆成功的信息;不存在则告诉登陆失败…

View来响应控制器交给它的数据

在这个过程中,控制器其实只是起到了承上启下的作用,它只负责中转(指挥调度),不负责具体的业务操作。

优缺点
【优点】

耦合性低,方便维护,可以利于分工协作

重用性高

【缺点】

使得项目架构变得复杂,对开发人员要求高

3. 三层架构

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层[表示层](User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。

区分层次的目的即为了“高内聚低耦合” 的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。

  • 服务员:负责接待客人和传菜

  • 主厨:后厨的头头,后处里主厨说了算。可以理解为架构师,负责后厨和服务员的对接

  • 小厨:每个小厨有自己特定的工作,各司其职

三层架构每层之间的逻辑关系:

三层优缺点
【优点】

开发人员可以只关注整个结构中的其中某一层

可维护性高,可扩展性高

可以降低层与层之间的依赖

有利于标准化

利于各层逻辑的复用

【缺点】

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

有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码

增加了开发成本

4. MVC与三层架构的区别

其实,无论是MVC还是三层架构,都是一种规范,都是奔着"高内聚,低耦合"的思想来设计的。三层中的UI和Servlet来分别对应MVC中的View和Controller,业务逻辑层是来组合数据访问层的原子性功能的。

在三层中,业务逻辑层和数据访问层要遵循面型接口编程的。这种接口定义和具体实现逻辑的分开,非常有利于后续扩展和维护!

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

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

相关文章

Excel制作甘特图

使用Excel表格制作甘特图,可根据任务开始时间和结束时间自动计算工时,并自动用指定颜色填充横道图。 1.新建Excel文档,先设置项目基本信息,包括表格名称,这里设置为“**项目甘特图”;然后添加任务序号列&a…

【软件工程导论】——面向对象与UML(学习笔记)

📖 前言:面向对象是以问题空间中出现的物体为中心进行模型化的一种技术。建立模型是软件工程中最常使用的技术之一。无论软件分析或软件设计,都需要建立模型。UML 就是OO 软件工程使用的统一建模语言。它是一种图形化的语言,主要用…

3D DRAM在2025年来袭

4月1日消息,据半导体工程报道,在行业大会Memcon 2024上,三星电子宣布其计划成为首家在2025年后步入3D DRAM内存时代的行业领军者。随着DRAM内存行业在本十年后期将线宽压缩至低于10纳米,现有的设计解决方案在如此精细的尺度上难以…

HarmonyOS 应用开发之Actor并发模型对比内存共享并发模型

内存共享并发模型指多线程同时执行复数任务,这些线程依赖同一内存并且都有权限访问,线程访问内存前需要抢占并锁定内存的使用权,没有抢占到内存的线程需要等待其他线程释放使用权再执行。 Actor并发模型每一个线程都是一个独立Actor&#xf…

Cisco交换机安全配置

Cisco交换机安全配置 前提 我们以下命令一般都要先进入Config模式 S1> enable S1# conf t S1(config)#端口安全保护 禁用未使用的端口 以关闭fa0/1到fa0/24的端口为例 S1(config)# interface range fa0/1-24 S1(config-if-range)# shutdown缓解MAC地址表攻击 防止CAM…

sql注入---Union注入

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 学习目标 了解union注入过程中用到的关键数据库,数据表,数据列sql查询中group_concat的作用使用union注入拿到靶机中数据库里的所有用户名和密码 一. 获得数据库表名和列…

酷开系统 | 酷开科技打造全流程全自动化运营链路

近日,QuestMobile发布的《2023年全景生态流量半年报告》数据显示,随着营销场景边界的拓展,越来越多的品牌方开始将阵地由移动端转移到大屏端。OTT及智能硬件营销占中国互联网营销市场规模比例已经从2020年的3.8%升至2022年的7.6%。随着人口红…

【JavaWeb】Day30.SpringBootWeb请求响应——响应

响应 HTTL协议的交互方式:请求响应模式(有请求就有响应)那么Controller程序,除了接收请求外,还可以进行响应。 1.ResponseBody 在我们前面所编写的controller方法中,都已经设置了响应数据。 controller方…

【C语言进阶】- 内存函数

内存函数 1.1 内存函数的使用1.2 memcpy函数的使用1.3 memcpy函数的模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现2.3 memcmp函数的使用2.4 memset函数的使用 1.1 内存函数的使用 内存函数就是对内存中的数据进行操作的函数 1.2 memcpy函数的使用 void* memcpy ( …

Docker容器与Serverless的融合:探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例

Docker容器与Serverless的融合:探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例 文章目录 Docker容器与Serverless的融合:探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例一、引言二、《2023腾讯云容器和函数计算…

交通标志识别项目 | 基于Tensorflow+SSD实现道路交通标志识别

项目应用场景 面向智能驾驶或自动驾驶场景道路道路交通标志的识别,在交通标志识别的基础上为下一步的智能决策提供前提 项目效果: 项目细节 > 具体参见项目 README.md (1) 安装依赖 Python3.5、TensorFlow v0.12.0、Pickle、OpenCV-Python、Matplotl…

论文笔记✍GS3D- An Efficient 3D Object Detection Framework for Autonomous Driving

论文笔记✍GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving 📜 Abstract 🔨 主流做法限制 : 我们在自动驾驶场景中提出了一种基于单个 RGB 图像的高效 3D 物体检测框架。我们的工作重点是提取 2D 图像中的底层 3…

AIGC-Stable Diffusion发展及原理总结

目录 一. AIGC介绍 1. 介绍 2. AIGC商业化方向 3. AIGC是技术集合 4. AIGC发展三要素 4.1 数据 4.2 算力 4.3 算法 4.3.1 多模态模型CLIP 4.3.2 图像生成模型 二. Stable Diffusion 稳定扩散模型 1. 介绍 1.1 文生图功能(Txt2Img) 1.2 图生图功能&…

数据结构(六)——图的应用

6.4 图的应用 6.4.1 最小生成树 对于⼀个带权连通⽆向图G (V, E),⽣成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有⽣成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的…

计算机视觉新巅峰,微软牛津联合提出MVSplat登顶3D重建

开篇:探索稀疏多视图图像的3D场景重建与新视角合成的挑战 3D场景重建和新视角合成是计算机视觉领域的一项基础挑战,尤其是当输入图像非常稀疏(例如,只有两张)时。尽管利用神经场景表示,例如场景表示网络&a…

代码随想录第27天 | 39. 组合总和、40.组合总和II、131.分割回文串

一、前言 今天的主题还是回溯算法&#xff0c;还是根据那个backtracking模板&#xff0c;但是今天会涉及到去重和一些小细节的问题。 二、组合总和 1、思路&#xff1a; 我一开始的想法就是在for循环转化为&#xff1a; for(int i 0; i < size; i) 但是这个是会陷入一…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之十 简单颜色反转效果 一、简单介绍 二、简单颜色反转效果实现原理 三、简单颜色反转效果案例实现简单步骤 四、注…

壁纸小程序Vu3(预览页面:弹窗)

1.展示跳转后的分类列表图片 classlist.vue <template><view class"classlist"><view class"content"><navigator class"item" v-for"item in 10"><image src"../../common/images/64.png" mode…

基于arkTS开发鸿蒙app应用案例——通讯录案例

1.项目所用技术栈 arkTS node.js express mongoDB 2.效果图 3.源码 Index.ets&#xff08;登录页&#xff09; 登陆时让前端访问数据库中已经存好的账号密码&#xff0c;如果可以查询到数据库中的数据&#xff0c;则账号密码正确&#xff0c;登录成功&#xff0c;否则登录…

Docker容器赋能TitanIDE:引领编程新纪元的集成开发环境

Docker是一种容器化技术&#xff0c;它可以将应用程序和其所有的依赖项打包到一个轻量级、可移植的容器中。以下是Docker的基本概念和优势&#xff1a; 基本概念&#xff1a; 镜像&#xff08;Image&#xff09;&#xff1a;一个镜像是一个只读的模板&#xff0c;可以用于创建…