MVC框架理解

2023-05-16

简介

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

MVC 编程模式

M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。

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

框架内容

MVC指MVC模式的某种框架,它强制性地使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式

视图

视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services.

模型

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJB s和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器

控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

主要区别

框架和设计模式的区别

MVC是一种设计模式。

框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。

框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。

框架模式有哪些?

MVC、MTV、MVP、CBD、ORM等等;

框架有哪些?

C++语言的QT、MFC、gtk,Java语言的SSH 、SSI,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等

设计模式有哪些?

工厂模式、适配器模式、策略模式等等

简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。

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

MVC框架理解 的相关文章

  • 7天学完Spring:AOP实战,SpringMVC统一处理

    目录 前言 一丶用户登录权限效验 lt 1 gt 最初用户登录验证 lt 2 gt Spring AOP 用户统一登录验证的问题 lt 3 gt 拦截器 拦截功能演示 lt 4 gt 拦截器原理 lt 5 gt 统一访问前缀添加 二丶统一异
  • xxl-job(2.4.1)使用spring-mvc替换netty的功能

    xxl job 2 4 1 使用spring mvc替换netty的功能 1 xxl job core引入spring mvc的依赖
  • 自定义MVC框架原理

    目录 一 什么是MVC 1 模型 Model 2 视图 View 3 控制器 Controller 二 自定义mvc核心思想 三 自定义MVC的核心原则 四 三层架构和MVC的区别 1 结构层次不同 2 重点关注不同 3 强调的功能不同 4
  • 网站发布一般步骤以及解决方法

    1 在D盘 随便一个地方 新建文件夹 2 在vs项目中点击发布弹出对话框 3 配置文件选择自定义 4 下一步 Publish method 选择file system 5 target location选择第一步创建的文件夹 6 下一步 f
  • MVC模式 &三层架构思想完成增删改查.

    MVC模式图解 三层架构图解 表现层 业务逻辑层 数据访问层互不干扰 也就是说比如我们表现层更改代码不会干涉到其他两层 com itheima web 这代表的是包名 也就是说最好把表现层或者业务逻辑层放到此对应的包名下 以后会用三大框架封
  • Spring MVC静态资源映射

    Spring MVC静态资源映射 静态资源映射 使用容器的默认Servlet location mapping cache period order Spring MVC需要对RESTful风格的URL提供支持 而真正的RESTful风格的
  • SpringMvc

    简述 基于Java实现Mvc模型的轻量级web框架 配置案例过程 导入maven
  • 控制台get的两种提交方式

    本次学习需要打开Visual Studio 2015简称 VS 开发工具 其他的版本也可以使用 打开进入页面创建项目 创建的项目命名为控制台get提交的两种方式 之后我们在软件默认的位置 保存的位置可以进行更改 之后就到更改的位置中查找 中
  • qml基础学习 模型视图(一)

    文章目录 一 理解qml模型和视图 二 效果展示 三 源码分析 1 GridView增删 2 列表 3 卡牌效果 四 相关文章 一 理解qml模型和视图 qt的发展是迅速的 虽然在每一个release版本中或多或少都有bug 但是作为一个庞
  • spring mvc中log4j的配置与使用

    原文地址 http rockelixir iteye com blog 1902352 如果使用spring插件创建一个spring template project 它会默认带log4j 只要改下log4j的配置就可以使用了 如果自己创建
  • Spring系列——Spring MVC配置文件

    Spring系列 Spring MVC配置文件 一 前端控制器DispatcherServlet 二 RequestMapping注解 1 使用方法 1 1 标注在方法上 1 2 标注在类上 2 RequestMapping注解的属性 3
  • 微软常用运行库(持续更新中)

    一 什么是运行库 运行库就是支持大部分程序软件运行的基础 由于很多Windows系统的常用软件都是采用 Microsoft Visual Studio 编写的 如图1 1所示 所以这类软件的运行需要依赖微软Visual C 运行库 比如像
  • layui中监听单击和双击事件的使用

    作者 张铭标 撰写时间 2019年 6月27日 平时在做数据回填的时候 我们需要用到layui中的监听单击和双击事件来进行数据的获取和回填 具体的使用如图所示 从图中看出这是监听单击事件 一开始需要先引入layui插件就不用多说了 先写一个
  • 关于我写了三万字博客后悔了好久这件事之第二个三万字GUI(swing)

    目录 简介 使用Swing的优势 Swing的特征 Swing基本组件的用法 Swing组件层次 AWT组件的Swing实现 简单了解swing JFrame 弹窗 标签 面板 按钮 3 6 列表 3 7 文本框 JTree TreeMod
  • SSM框架-小区物业管理系统(附源码和运行视频)

    文章目录 系列文章目录 前言 一 开发框架与业务需求 1 开发框架 2 开发环境 3 整体业务 二 项目结构以及页面展示 1 注册 登录页展示 2 首页 小区管理 3 房产 业主信息管理 4 停车位 服务管理 三 ssm框架配置以及代码包级
  • 利用MVC做一个 常见的管理系统

    登陆的部分 gt 数据库 gt 表 admin id name pass regtime 表与类的映射关系 基于面向对象 转换成对象的操作 gt 登陆页面
  • vue +C# mvc 坑

    1 把input标签放入到form表单中后 再将input中的值新增到数据库后 界面会刷新 解决 删除form 标签 原因待查
  • html理解MVC模型与MVVM模型底层实现

    一 MVC模型的底层实现 1 1 相关代码 div div
  • MVC三层架构

    1 MVC三层架构 MVC Model View Controller 是一种常见的软件设计模式 用于组织和管理应用程序的代码和逻辑 它将应用程序分为三个主要部分 模型 Model 视图 View 和控制器 Controller 每个部分都
  • Spring MVC开发流程

    1 Spring MVC环境基本配置 Maven工程依赖spring webmvc

随机推荐

  • int和Integer的区别

    int和Integer的区别 1 Integer是int的包装类 xff0c int则是java的一种基本数据类型 2 Integer变量必须实例化后才能使用 xff0c 而int变量不需要 3 Integer实际是对象的引用 xff0c
  • 一起做激光SLAM[六]isam于SLAM位姿因子图优化的使用

    本节目标 xff1a 学习gtsam与isam在二位位姿pose2和三维位姿pose3上的使用 xff0c 并将isam用于位姿的因子图优化 预期效果 xff1a 将ICP匹配带来的瞬间位移变成对之前累积误差的消除 蓝色ICP无图优化 xf
  • java.lang.ClassNotFoundException问题的解决

    作者 xff1a 朱金灿 来源 xff1a https blog csdn net clever101 调试运行一个java项目出现错误 xff0c 错误信息如下 xff1a 严重 Error configuring application
  • Python 获取当前路径(文件及所在文件夹,正斜线)

    参考博客 xff1a http www cnblogs com wind wang p 5822192 html 更多路径读取请参照上述博客 xff08 使用Python 2 x版本 xff09 xff0c 这里只挑出个人认为最直接 常用的
  • 设置 Android Studio 显示 Local Changes 标签页

    参考 xff1a 2020版本idea version control 不见了 解决办法 新版的 jetbrains idea 的 Git 窗口就是之前的 Version Control 窗口 xff0c 但是默认不显示 Local Cha
  • 【C++】C++11 vector 之 emplace_back() 使用场景简单剖析

    emplace 关键字是 C 43 43 11 的一个新特性 emplace back 和 push abck 的区别是 xff1a push back 在向 vector 尾部添加一个元素时 xff0c 首先会创建一个临时对象 xff0c
  • 【C++】nomember named ‘to_string‘ in namespace ‘std’

    在使用 Android Studio 编写 C 43 43 代码时 xff0c 出现如下错误 xff1a nomember named 39 to string 39 in namespace 39 std 39 原因 xff1a 这是因为
  • 【CMake】Make 命令无法正常执行

    问题 在 Linux 系统上使用 CMakeLists txt 编译 C 43 43 项目时 xff0c 执行 cmake 命令之后 xff0c 再执行 make 命令出现了 make 命令不生效的问题 具体的现象是 xff1a cmake
  • 【ProtoBuf】ProtoBuf 通过 proto 文件生成 cc/h 文件

    参考 xff1a protobuf ProtoBuf 通过 proto 文件生成 cc h 文件的步骤如下 xff08 Linux 下 xff09 xff1a 先通过 protobuf 源文件编译出 protoc 可执行文件 span cl
  • 【C++】C++ 单例模式总结(5种单例实现方法)

    本文对 C 43 43 的单例模式进行简单介绍和实现 参考 xff1a C 43 43 线程安全的单例模式总结 xff08 强烈建议阅读原文 xff0c 本文相当于做了总结 xff0c 留作学习 xff0c 并添加了一种新的单例方法 std
  • 【C++】epoll + socket 网络编程实现一个简单的 server

    文章目录 服务端客户端 本着学习 epoll 的态度 xff0c 本文使用 epoll 43 socket 实现了一个简单的 server xff0c 可以接收多个客户端的连接并与之通信 话不多说 xff0c 直接上代码 xff0c 完整的
  • 【已解决】Mac 无法使用 GDB 进行调试的问题

    问题 Mac 初次使用 GDB 进行调试时 xff0c 会出现 xff1a gdb run Starting program usr local bin fabnacci Unable to find Mach task port for
  • 【Git】解决 git pull 提示 Permission denied (publickey) 的问题

    问题 在使用 ssh keygen 创建 github 秘钥时没有使用默认文件 xff0c 而是自定义了 xxx github 的秘钥文件 xff0c 然后将公钥添加到 github 上 之后发现每次 Mac 开机后使用 git pull
  • 【保研复习】数据结构复习笔记

    基于王道数据结构进行的保研面试复习 文章目录 数据结构绪论数据结构1 逻辑结构线性结构线性表栈队列 非线性结构树图集合 xff08 无序 xff09 2 存储结构顺序存储链式存储索引存储散列存储 3 数据的运算 算法特点效率度量时间复杂度空
  • MAVLINK 请求参数和接收参数

    if decodeState 61 61 1 之后是放在mavlink消息解析后面 请求返回参数配置列表 void MavDebug on pushButton 3 clicked mavlink message t msg mavlink
  • JSP与servlet的区别

    一 了解Servlet的概念 Servlet定义 xff1a Servlet是基于Java技术的Web组件 xff0c 由容器管理并产生动态的内容 Servlet引擎作为WEB服务器的扩展提供支持Servlet的功能 Servlet与客户端
  • CSS简单的图片居中

    图片的居中显示 css 有很多方法 xff0c 但在很多情况下有的方法无效 xff0c 这是件很头疼的事情 xff0c 比如 一般设置图片属性 text align center 水平居中 xff0c 但这个方法经常无效 xff0c 很多前
  • jsp中的javabean

    一 JavaBean简介 JavaBean是一种特殊的Java类 xff0c 它遵从一定的设计模式 xff0c 开发工具和其他组件可以根据这种模式来调用JavaBean JSP中使用的JavaBean非常简单 xff0c 这种简单JavaB
  • Session简述

    session概述 session用于记录用户的状态 xff0c 指的是在一段时间内 xff0c 单个客户端和web服务器的一连串相关的交互过程 在一个session中 xff0c 客户可能会多次请求访问同一个资源 xff0c 也有可能请求
  • MVC框架理解

    简介 MVC开始是存在于桌面程序中的 xff0c M是指业务模型 xff0c V是指用户界面 xff0c C则是控制器 xff0c 使用MVC的目的是将M和V的实现代码分离 xff0c 从而使同一个程序可以使用不同的表现形式 比如一批统计数