MVC模式基本理解

MVC、MVP和MVVM的开发模式的讲解以及事例举例 阅读详情

以下内容参考了《精通Java Web整合开发(JSP+Ajax+Struts+Hibernate)》和《自己动手写Struts——构建基于MVC的Web开发框架》里面的内容。


概述


MVC模式,即模型-视图-控制器(MVC,Model-View-Control)是一种交互界面的结构组织模型。

模型(Model),代表的是应用的业务逻辑,包含应用程序的核心功能,它表示企业数据和业务规则。模型封装了应用程序的状态。在MVC模式中,模型要处理的任务很多,为了能使一个模型能给多个视图提供数据,那么要让模型与数据格式无关。

视图(View),应用的视图层,提供模型的表示。它是应用程序的界面,是用户能看到并与之交互的界面。在视图层中,没有发生真正的处理。视图层只是展示由模型提供数据的一种方式,因此,视图只能访问模型的读方法,而不能访问模型的写方法。视图对控制器一无所知,当改变模型时,视图应得到通知。

控制器(Control),提供应用的处理过程控制,控制器对用户的输入做出反应,它创建并设置模型。控制器相当于一个中转站,它本身不处理和输出任何数据。控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后确定用哪个视图来显示模型处理返回的数据,从而把响应结果送回到客户端。



MVC模式的结构



用户提交的请求导致控制器改变模型或视图,或者同时改变模型或视图。一旦控制器改变了模型的数据,就会通知所有依赖的视图进行自动更新;从另一方面讲,只要控制器选择了相应的视图,视图就会从模型中获取数据来进行刷新。



MVC模式的设计思想


MVC模式的设计思想就是:把原来开发人员针对一个系统的输入、输出、处理流程编程的方式改变为按照模型层、视图层、控制层进行分解,从而使得整个系统责任明确、接口清晰,加快了开发流程。

1、 模型层

模型就是业务流程、状态处理及业务规则的制定。模型一般有两类:业务逻辑模型和数据模型。模型接受视图请求的数据,并返回最终的处理结果。业务流程的处理过程对另外两个层(View和Control)来说是封闭的。在MVC模式中,我们要把应用模型按一定的规则抽取出来,抽取的层次是关键,这也是判断开发人员是否优秀的依据。数据模型主要指实体对象的数据保存,即持久化。数据模型实现了对视图和模型之间交互的支持。实现把“做什么(业务处理)”和“怎么做(业务实体)”分离,这样就可以实现业务逻辑的重用。业务模型的设计是MVC最主要的核心部分。

2、 视图层

视图就是客户和系统进行交互的界面,作为视图来讲,它只是展示由模型提供的数据的一种方式。它可以是一个HTML页面或者是其它的方式等等。

在MVC设计模式中,视图仅限于处理视图上数据的采集和处理,以及用户的请求,不包括视图上业务流程的处理,业务流程的处理和状态的改变交给模型层处理。

3、 控制层

控制层就像一个中转站,它接受用户请求,并根据用户请求将模型与视图匹配在一起,共同完成用户的请求。控制层不做任何的数据处理,它就是一个分发器,选择什么样的模型以及视图,就可以完成什么样的用户请求。为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。用户提交一个表单或者点击一个链接,控制层在接受请求后,它本身并不处理业务信息,而是根据用户的请求类型,把用户的信息传递给相对应的模型,告诉模型做什么,等模型处理完毕后,再把模型处理后的数据选择符合要求的视图返回给用户。这样,一个模型就可能对应多个视图,一个视图可能对应多个模型。这样的话,我们可能会在控制层进行一些简单的数据转换等操作。

模型、视图与控制器之间的分工协作关系如下:


关系图说明如下:

模块名称

分工

协作

模型M

1、抽象系统应用的功能

2、封装系统的状态

3、提供使用系统功能的方法和路径

4、管理数据的存储和一致性

5、当数据发生变化时通知相关组件

1、当系统状态改变时通知视图

2、响应视图的状态查询

3、提供对控制器的操作途径

视图V

1、抽象数据表示

2、表示针对用户的数据

3、维护与模型的数据一致性

1、显示模型的数据

2、接收模型的数据更新通知更新视图

3、接受用户输入的数据传给控制器

控制C

1、抽象用户和系统的时间的语意映射

2、把用户输入映射到系统事件

3、根据用户输入和上下文情况选择合适的显示数据

1、接收用户请求

2、调用某个模型处理用户请求

3、 将处理结果送给某个视图进行显示

 

总结MVC的处理过程如下:

首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型的数据,并通过视图层展示给用户。



基于MVC的Web框架


一般情况下,实现一个基于MVC的Web框架示意图如下:


Tessent ATPG进阶:解锁多种Fault Model的工程实践与选型指南 本文深入探讨Tessent ATPG中多种Fault Model的工程实践与选型策略,涵盖Stuck-at、Transition、Bridge等核心模型的应用场景与配置技巧。通过实际案例解析,展示如何组合不同Fault Model提升芯片测试覆盖率,特别针对汽车电子、超低功耗芯片等复杂场景提供专业解决方案。 阅读详情

相关推荐

从TL431光耦到集成隔离器:3种反激电源反馈方案全对比,你的项目到底该选哪个?

本文深入对比了反激电源设计中TL431光耦、集成隔离器和原边反馈三种主流反馈方案的优缺点,帮助开发者在电源设计中选择最适合的方案。从精度、成本、隔离等级等多维度分析,为反激式(Flyback)拓扑的应用提供实用选型指南。

weixin_30536513的博客 399

MVC设计模式

对于开发人员来说,学习和掌握MVC模式是非常重要的,它可以提高开发效率和质量,使得构建复杂的应用程序变得更加容易。它为应用程序提供了一种结构化的方法,将数据、用户界面和业务逻辑分开,从而使得应用程序更易于维护、扩展和重用。解耦:MVC模式将应用程序的不同部分(数据、用户界面和业务逻辑)分离,降低了它们之间的耦合度。视图(View):视图是应用程序的用户界面。可扩展性:由于MVC模式将应用程序的不同部分分离,因此当应用程序需要扩展时,可以更容易地添加新的功能或模块,而不会对现有的代码造成太大的影响。

weixin_43735634的博客 5206

Python+Appium实现泛微OA自动打卡:5分钟搭建移动端自动化脚本

移动端自动化测试是软件测试与办公自动化领域的重要技术方向,其核心原理是通过程序模拟用户对手机应用界面的操作,实现重复性任务的自动执行。Appium作为主流的开源移动端自动化框架,基于WebDriver协议,支持跨平台且无需修改被测应用,为自动化脚本开发提供了标准化接口。在工程实践中,结合Python简洁的语法和丰富的生态,可以快速构建稳定可靠的自动化解决方案。这一技术组合的价值在于能够高效处理“重复性、低价值、高频率”的日常操作,例如考勤打卡、数据填报等办公场景,显著提升工作效率。本文以泛微OA Emobi

weixin_28836875的博客 389

flask mvc模式开发_MVC设计模式

MVC的全名是Model View Controller,是模型(Model)-视图(view)-控制器(controller)的缩写,是一种设计模式。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间,提高代码复用性。使用的MVC的目的:它将这些对象、显示、控制分离以提...

weixin_39850167的博客 1758

我是如何让爬虫在小红书风控下“偷数据”的?xhs爬虫这些骚操作你可能想不到

最绝的是,他们连评论区都做了动态加载,第一页显示20条评论,再往下滑就变成“加载失败”,实际上得模拟真人反复上滑下滑才能触发完整加载。上个月我们团队帮一家美妆品牌抓竞品爆款笔记,刚开了10个爬虫账号,结果5分钟不到,系统直接弹窗警告“检测到非正常操作”——后来发现,问题出在Wi-Fi上。小红书的风控每周都在升级,上周还能用的方案,这周可能就得重写。但要是想大规模采集,比如监控竞品爆文、分析用户画像,劝你先算笔账:光是一个能抗封的账号矩阵,每月成本就得烧掉几万块,更别说还得养团队随时应对系统升级。

klj3388的博客 1万+

基于STM32L4XX、HAL库的ICM-42670-P姿态传感器驱动程序设计

sprintf(buffer, "温度: %.1f °C\r\n\r\n", sensor_data.temperature);sprintf(buffer, "陀螺仪: X=%.2f Y=%.2f Z=%.2f rad/s\r\n",sprintf(buffer, "加速度: X=%.2f Y=%.2f Z=%.2f m/s²\r\n",sprintf(buffer, "开始校准IMU,请保持传感器静止...\r\n");sprintf(buffer, "读取传感器数据失败\r\n");

zhusl6688的博客 639

MVC思想概述

一、MVC思想概述     MVC思想最早是由Trygve M.H.Reenskau提出,他是挪威的计算机专家,MVC是他在1979年访问施乐帕克研究中心期间提出的一种主要针对GUI应用的软件架构模式。     MVC思想体现了“关注点分离”这一基本方针,它将一个人机交互的应用涉及的功能分为Model、Controller、View三部分,他们各自的职责如下。 Model是对应用状态和业务...

高级项目经理、专注于技术架构、分享项目管理及职场心得 6249

Qt QCustomPlot 图形库详解及使用

QCustomPlot 是一个开源的 Qt C++ 库,专门用于创建数据图表。易于集成到 Qt 项目中。支持多种图表类型,如折线图、散点图、条形图等。提供丰富的交互功能,如缩放、平移、选择和拖动。高度可定制,支持图形的各种样式设置。// 添加第一条曲线i < 101;++i) {// 设置曲线颜色// 添加第二条曲线i < 101;++i) {// 设置曲线颜色// 设置散点样式// 添加图例。

MusicScore的博客 764

MVC模式简介

MVC模式一.MVC是什么二.优缺点2.1 MVC模式的优点2.1.1 低耦合2.1.2 重用性高2.1.3 生命周期成本低2.1.4 部署快2.1.5 可维护性高2.1.6 有利软件工程化管理2.2 MVC模式的缺点2.2.1 没有明确的定义2.2.2 不适合小、中型应用程序2.2.3 增加系统结构和实现的复杂性2.2.4 视图对模型数据的低效率访问 一.MVC是什么 MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)

weixin_45808737的博客 1万+

使用MATLAB实时处理摄像头图像

本文介绍了如何使用MATLAB进行实时图像处理,包括从摄像头获取图像、对图像进行处理并显示处理结果。我们将演示如何使用MATLAB的图像处理工具箱来实现常见的图像处理任务,如图像增强、边缘检测和物体检测。

XsiJava的博客 920

uniapp ios原生插件开发 (framework,cocoapods)

已知UniApp的插件开发方式有两种, 第一种 Xcode Framework的方式,这种方式是官方指定的方式。 这种方式的优点就是简单直接, 但也有不足,比如当插件需要引入一些三方库时,操作起来就不是那么方便。 而使用Cocoapods则可以很方便的引入三方库。 接下来,本文探索使用Cocoapods的方式来进行UniApp插件开发。

Rey的技术博客 9823

MVC使用的设计模式

Observer (观察者模式)Composite(组合模式)和Strategy(策略模式)。所以说MVC模式又称复合模式。MVC(Model-View-Controller) 模式的基本思想是数据,显示和处理相分离。模型(Model)负责数据管理,视图(View)负责数据显示,控制器(Controller)负责业务逻辑和响应策略。模型、视图、控制器各个部分的作用模型(Model):负责封装并实现应用的具体功能。通常又分为业务逻辑层(用来为视图层和数据持久层准备数据和并处理从。

kalvin_y_liu的博客 2986

国密SSL通信的调试技巧

前面写了几篇国密开发相关的文章:解读国密非对称加密算法SM2啥?双证书?详解国密SM2的加密和解密详解国密SSL ECC_SM4_SM3套件详解国密SM2的数字签名这篇文章来聊一聊国密S...

云水木石 3206

java EE开发之Servlet第八课:MVC模式 (基本理解)

(7)在Struts2Filter的服务方法中得到业务员对象后,调用业务员execute方法,开始工作,并接收业务员返回的结果页面的jsp文件名,在Struts2Filter的服务方法中接收到业务员返回的结果页面jsp名字后后,将页面转发或者是重定向到结果页面去。#####6,因为方法的返回类型是 String对象,这个字符串代表的就是最终跳转的和页面,但是有一个问题,就是跳转的方式有重定向和转发这里,我们不做判断,默认就用转发。如控制层可独立成一个能用的组件, 视图层也可做成通用的操作界面。

Meryoufdd的博客 292

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Spring MVC】MVC设计模式的Java Web框架

Spring MVC 是 Spring 框架中的一个模块,基于 Model-View-Controller (MVC) 设计模式,用于构建灵活和可扩展的 Java Web 应用程序。它通过前端控制器 DispatcherServlet 处理所有请求,并将请求分发给对应的控制器,负责业务逻辑处理,再将结果传递给视图进行渲染,简化了开发过程并实现了应用程序的高效组织和维护。​

科马的博客 3383

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ThinkPHP中的MVC开发模式理解一

MVC这三个字母不愧博大精深,当我自以为要马上攻破php最后一道难关的时候,那时候的我好想就想错了,当我研究了一个半月之后,竟然发现其思想是那么的难以理解,直到现在我也不得不承认我只是对这个思想的认识只是一个皮毛,对于很底层的东西还是不太理解,还有别的要说的,但先说一下我对MVC的理解: 其实MVC并不是一个什么语法或者算法,只是一个开发模式,说道开发模式,我所知道的有传统的MODEL模式,即过

MyCodeDream的专栏 3575

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深入理解MVC模式

一,什么是MVC模式 该模式是一种软件设计典范,他把软件系统划分为三个基本部分:模型层(Model)、视图层(View)、控制器(Controller) *Model(模型)表示应用程序核心(比如数据库记录列表) *View(视图)显示数据(数据库记录) *Controller(控制器)处理输入(写入数据库记录) Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通...

weixin_30436891的博客 109

浅谈MVC设计模式

    最近在整理自己所写的项目时,其中有一个项目利用了MVC设计模式,当时做项目的时候只是简单会使用这个设计模式。今天突然想研究研究它,所以结合网上的一些资料,将MVC设计模式做一个简单的总结概括。    MVC设计模式最大的特点:        可以实现模型的复用:一方面,模型只返回处理结果,并不用关心这些结果如何展现。我们可以提供不同的视图来展现这些        数据;另外一方面,对于同一...

柯南的博客 3835

iOS for MVC模式

MVC逻辑示意图 我们接下来通过MVC模式要实现的界面: 文件夹结构: 自定义视图AppView.xib示意图: 控制层: "ViewController.h" // // ViewController.m // // Created by Long. // Copyright © 2016年 LongChuan

Zok93 598

《php面向对象》第26课:MVC框架的基本结构

上节课我们提到,现成的MVC框架有很多,最具有代表性的有thinkphp,YII ,为什么开要自己开发一个呢? 一个成熟的MVC框架需要10人以上的团队至少开发一年以上,我们开发的MVC框架只能是mini型。这样做的目的: 深入学习面向对象编程和MVC设计模式 下面我们设计一个最简单的MVC结构,用实际代码来表示模型、视图、控制器三者之间的关系 。 我们创建了四个php文件: 外层目...

李书明(石家庄)的专栏 460

ASP.NET MVC 理解MVC模式

PS:MVC出来很久了,工作上一直没机会用,所以我也没去学。出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各位园友的斧正。 理解一般意义上的MVC模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分: 模型(Model):模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理

萌萌的It人 www.itmmd.com 1537

谈谈JavaEE的mvc模式及典型的三层架构

首先,向读者介绍一下mvc架构,mvc是一种源于桌面程序的架构模式,它的基本思想是把程序界面和业务逻辑分开,这样便于软件的后期维护,同时也方便开发时期分工及管理,mvc有很多有点所以现在已经被广泛的应用与web开发中。(JavaEE架构交流群:群91494917)     下面介绍一下自己了解mvc架构的经历,和其中的一些误区,以便于读者可以更好的理解什么是mvc;我第一次接触mvc是在学习ph

程序员博客 1万+

MVC模式解读

MVC 模式结构 MVC 模式将应用分为模型、视图和控制器三个部分: 1. 视图:数据的展现(V)。 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。 2. 模型:应用对象(M)。 模型是应用程序的主体部分。

weboof的博客 454

JSP使用Servlet作为控制器实现MVC模式实例详解[转]

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ...

ruankun521的博客 717

[ASP.NET MVC 小牛之路]01 - 理解MVC模式

理解一般意义上的MVC模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为以下三个基本部分: 模型(Model):模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。视图(View)

linybo的专栏 651
上一篇: ExtJS 2使用经验(树、表格树、RadioGroup)
下一篇: spring3.1.x源码编译并导入eclipse
HingKwan
博客等级 码龄17年 51粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值