mvc2 mvc_每个人都知道MVC…

mvc2 mvc

从一个最近的博客中,您可能会发现我最近一直在进行一些采访,就像他们对Web应用程序开发人员所说的那样,我问的一个问题是“您能解释一下MVC模式是什么吗?”,值得赞扬的是,每个候选人知道答案。

对于不认识的人,MVC代表模型,视图,控制器,并且是一种设计模式,用于将应用程序的业务,数据和表示逻辑分离为谨慎的组件。

MVC模式组件的Web上有很多定义,因此冒着使事情更加混乱的危险,这是我的:

模型

该模型表示系统内的数据或知识。 它通常来自但不限于数据库中的数据,并且可能包含业务逻辑。 在我看来,这确实是用户希望在其屏幕上看到的信息。

视图

该视图负责在屏幕上显示模型。 对于Web应用程序,它是由浏览器提供的,并且在Java世界中,通常是使用JSP构建的。

控制者

控制器将用户,模型和视图链接在一起,接受用户的请求,将其与适当的模型结合在一起,并将模型与适当的视图结合在一起。

解释这一点的图通常看起来像这样:

这样做的好处包括可重用性,例如使用同一控制器与Web浏览器和电话通话; 可维护性,因为它更易于查找,修复和增强功能; 和可测试性,因为您可以分别测试每个组件。

MVC模式是由Trygve Reenskaug发明的,并且自1978年以来一直存在。TrygveReenskaug既在Wikipedia上拥有自己的页面,又维护着自己的详细介绍MVC的网页 。

就网络应用程序而言,MVC的版本和定义似乎与海滩上的沙粒一样多,围绕什么构成模型和视图进行了各种辩论。 例如,在Web应用程序中,视图是否包含HTML或仅包含CSS? 希望当我说Web应用程序通常使用MVC的一种变体(称为前端控制器模式)时,我不会引起争议。 在这种模式下,通常会有一个Servlet接收来自浏览器的请求。 该servlet检查请求,然后将其委托给另一个对象,该对象充当子控制器,将特定请求的视图和模型联系在一起。

前端控制器的早期实现通常使用所谓的JSP前端策略,即针对特定请求的每个JSP都充当子控制器。 使用这种策略时,您经常面临编写一大堆自定义标签库以包含在每个页面中的任务。 这些负责编组模型并确定模型在视图中的呈现方式。 根据经验,这会导致将关注点与控制器,模型和视图的关注点分离在一起,并在一个地方混合在一起,并且通常由JSP中的JSP进行演示,其中包含用于表示逻辑的自定义标签,与用于数据访问的其他自定义标签混合所有这些都与Java Scriptlet,HTML,Javascript和开发人员的困惑融合在一起。 当关注点分离失败时,MVC崩溃,几个反模式重新出现,包括功能分解 , 怪物对象和泥浆大球 。 Sun(现在为Oracle)在其J2EE核心模式中不建议使用JSP前端策略。 从经验来看,这是我绝对同意的观点……下图说明了JSP前沿战略的陷阱:

更多最新的实现方式(完全避开了JSP前端策略)将委托给纯Java子控制器,而JSP则仅负责整理演示文稿。 子控制器的职责是从模型中获取数据并将其戳入JSP以进行呈现。 这种方法已经被许多Web应用程序框架(例如使用Action类的Struts和在版本3中使用其@Controller注释以及在版本2.x中使用处理程序类的Spring MVC)成功采用,取得了巨大的成功。

使用此技术必定会有一些陷阱,但是不会想到严重的陷阱,例如关注点分离的中断。 如果您知道任何事情,请告诉我...

参考:我们的JCG合作伙伴 Roger Hughes在Captain Debug的博客上对每个人都了解MVC 。

相关文章 :

  • Spring MVC拦截器示例
  • jqGrid,REST,AJAX和Spring MVC集成
  • SpringMVC 3 Tiles 2.2.2集成教程
  • Spring MVC3 Hibernate CRUD示例应用程序
  • Spring MVC开发–快速教程
  • Spring,Quartz和JavaMail集成教程
  • Spring Insight – Web应用程序分析
  • Java教程和Android教程列表

翻译自: https://www.javacodegeeks.com/2011/11/everybody-knows-about-mvc.html

mvc2 mvc

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

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

相关文章

移动端 长按事件_Flutter事件监听

一. 事件监听 在大前端的开发中,必然存在各种各样和用户交互的情况:比如手指点击、手指滑动、双击、长按等等。在Flutter中,手势有两个不同的层次:第一层:原始指针事件(Pointer Events):描述了屏幕上由触摸…

在CSDN的博文中如何添加博主名片

前言:以前看到很多大佬博文中都有自己的名片,我以为是他们自己打字打上去的,自己打上去样式却不理想。今天终于发现了新大陆。分享给你们。 效果图: 设置方法如图:找到创作权益——博主名片——展示博文详情页&#xf…

vscode中文设置不生效_VSCode详细安装教程

1.下载https://code.visualstudio.com/download 是Microsoft(微软的产品)User Installer版:会安装在当前计算机帐户目录,意味着如果使用另一个帐号登陆计算机将无法使用别人安装的vscode。System Installer版:安装在非用户目录,例…

毛绒材质渲染_学室内设计必进,建模渲染那都不是事儿

近年来,室内设计从业人员需求量和薪酬持续增长带来的是室内设计行业的飞速发展,而设计能力也成为“创新与创造”的不可或缺。设计能力是多方面能力的综合体现而室内效果图作为设计成果的最主要表现手段,是最基础也是最重要的技能之一。那么持…

2020年末总结,脚踏实地,一步一个脚印——致敬自己一年的心酸历程

摘要:恰逢官方征文,谨以此篇记录自己一年的心酸历程与前端知识的感悟。 目录 在时代工场的主要工作 我为什么从时代工场离职?

如何使用Java 8函数式编程生成字母序列

我偶然发现了用户“ mip”一个有趣的堆栈溢出问题 。 问题是: 我正在寻找一种生成字母序列的方法: A, B, C, ..., Z, AA, AB, AC, ..., ZZ.可以很快将其识别为Excel电子表格的标题,正是这样: 到目前为止,没有答案使…

maven 打包指定依赖包_[Maven]-Maven基础-01-基础概念

Maven基础1.基础概念Maven基础概念什么是Maven什么是理想的项目构建?高度自动化,跨平台,可重用的组件,标准化的什么是依赖?为什么要进行依赖管理?自动下载,统一依赖管理有哪些项目信息&#xff…

关于本人在多个技术平台发布文章的声明

摘要:由于博主有经常记录博客的习惯,很多其他平台的运营或者编辑多多少少会找到我,让我在他们的平台更新文章,写这篇文章主要为了陈述事实与避免纠纷。 本博客会长期维护更新,感谢大家的理解与支持。 孙叫兽目前只在CSDN、开源中国、掘金、infoq、腾讯云+技术社区上更新博…

cmseasy漏洞复现

介绍 提供可视化编辑企业网站管理系统系统、网站模板、以及相关文档资料下载,网站系统完美运 行PHP7环境中。 官方网站: https://www.cmseasy.cn/ cmseasy_7.3.8 任意文件操作漏洞复现 cmseasy_7.6.3.2逻辑漏洞复现 "无需代码,自由拖拽布局,适应…

教你如何看待程序员这个职业的前前后后

现在大家的学历基本提升上来啦,基本搞编程的都是本科或者大专起步,这里仅那本科举例。 好多大学生跟我说是计算机专业,软件工程专业等,啥都学一点,这样真的好? 对于大学生,如果是计算机相关专业…

请领导批阅文件怎么说_刚到公司,应该怎么喊领导,别直接说名字,高情商这样称呼...

刚到公司,应该怎么喊领导,别直接说名字,高情商这样称呼我们都有经历过刚刚从大学毕业出来后,寻求工作的场景。一般来说,我们都是会选择和自己大学所学专业挂钩的职业,在这样的情况下, 我们的选择…

分屏显示_2021元旦高性价比显示器推荐——便携式显示器选购指南(分屏办公、小尺寸办公必备)...

想要告别小显示器选择困难症,挑选到自己心仪的小显示器,大家看这篇文章就够了!显示器是PC的重要组成部分,在应用程序级别具有“场景”属性。显示器的要求因办公,娱乐和学习等不同应用而异。无论应用场景如何&#xff0…

一键反编译Android包教程

功能介绍 某些时候我们想修改apk包内容,比如汉化某个游戏,这时候就需要修改游戏apk的包内容,并重新签名成安卓手机识别的apk文件,下面详细介绍,文章末尾有一键修改工具。(注意:此工具尚未整合修…

发现一个可视化大屏操作神器FBI,你值得一试

FineBI 是帆软软件有限公司推出的一款商业智能(Business Intelligence)产品。 FineBI 自助分析以业务需求为方向,通过便携的数据处理和管控,提供自由的探索分析。 FineBI 定位于自助大数据分析的 BI 工具,能够帮助企业的业务人员和数据分析师,开展以问题导向的探索式…

uniapp去掉右侧滚动条的解决办法?

用 uniapp 开发小程序,内容多的情况下,在微信开发者工具和真机调试下,右侧出现滚动条,有没有办法隐藏滚动条? 参考文档:https://uniapp.dcloud.net.cn/collocation/pages?id=app-plus 解决办法一: 参考文档:https://uniapp.dcloud.net.cn/collocation/pages?id=app-plus…

内网渗透工具CobaltStrike使用教程详解

文章目录 前言一、CobaltStrike本次实验环境 二、CobaltStrike详细使用1.启动CobaltStrike2.客户端连接团队服务端3.配置监听器4.生成木马5.权限提升,命令执行以及内网横线穿透等。6.插件加载7.命令执行等操作8.目标信息总结表(自动记忆保存&#xff09…

日志长度_Kafka 日志存储详解

点击上方“Java知音”,选择“置顶公众号”技术文章第一时间送达!作者:爱宝贝丶my.oschina.net/zhangxufeng/blog/3114166本文主要介绍kafka中日志的存储原理,主要内容包括kafka日志存储格式、日志文件的管理方式、日志索引文件的格…

Apache Spark:更改架构之前必须解决的5个陷阱

迁移到Apache Spark之前需要了解的5件事 似乎每个人都只是在谈论最热门的新技术,而忽略采用它的真正含义。 但这是自然的,对吧? 新功能和承诺胜过其他一切,而艰巨的挑战和决​​定被抛在一边。 这次不行。 软件架构很难&#xf…

双清模式无命令_linux性能监控:IO性能监控命令之iotop命令

内存监控命令之iotop命令1概述:iotop命令 是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况&#xff0…

多生产者_通知:生产者补贴!打卡时间!定了

【生产者补贴!打卡时间定了!9月30日前!】老道说:这几天吉林和黑龙江陆续下发了2020年玉米、大豆生产者补贴实施工作方案!连日来关于生产者补贴方面的消息,也算是逐渐浮出水面!根据黑龙江地区的方…