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…

Ajax.BeginForm无法调用 ajaxOptions的js函数

使用ajax.beginForm无法调用ajaxOptions的js函数的原因,一般都是缺少以下2个JS文件: 1,Install-Package jQuery –version 1.10.22,Install-Package Microsoft.jQuery.Unobtrusive.Ajax –version 3.0.0 添加方法: 【工…

将非事务性资源绑定到JTA事务中的几种模式

我最近发表了一篇有关如何将非事务性资源(如Web服务/微服务)绑定到全局分布式事务中的文章,以便自动处理恢复。 多年来,我经常不得不将“非事务性”系统集成到Java EE应用程序服务器中,而数据一致性通常是讨论的话题&a…

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

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

windows查看密码工具

windows查看密码工具windows前言 本篇介绍几款优秀的Windows上的密码抓取工具,每个工具都有自己的特点非常实用,欢迎补充。 0x01 Mimikatz 个人点评:这款工具非常强大,公认的Windows密码神器。 1. 简介 Mimikat是一个法国人写的轻…

孙叫兽VUE学习笔记总结(值得收藏),很全很详细!!!

官方文档:http://vuejs.org/v2/guide/syntax.html 中文文档: https://cn.vuejs.org/v2/guide/syntax.html Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。 Vue 的核心库只关注视图层,不…

hashCode之二--Java:重写equals()和hashCode()

以下内容总结自《Effective Java》。1.何时需要重写equals()当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。2.设计equals()[1]使用instanceof操作符检查“实参是否为正确的类型”。[2]对于类中的每一个“关键域”,检查实参中…

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

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

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

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

第六章 面向对象(下)

1. 不上机,判断下面程序的输出结果 class X {Y b new Y();X() {System.out.print("X");} } class Y {Y() {System.out.print("Y");} } public class Z extends X {Y y new Y();Z() {System.out.print("Z");}public static void mai…

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

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

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

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

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

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

架构之路(八)从CurrentUser说起

CurrentUser,也就是当前用户,这是我们系统中大量使用的一个概念。 确认当前用户 当然,我们利用的是cookie:用户的ID存放在cookie中,服务器端通过cookie中的Id,查找数据库,得到需要的用户信息。 …

手写爬虫框架

前言 参照了Scrapy、Feapder的设计模式,实现的一个轻量级爬虫框架(目前约200行代码) 源码地址 https://gitee.com/markadc/pader 项目持续更新中…

cmseasy漏洞复现

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

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

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

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

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

正则表达式的汉字匹配

这里是几个主要非英文语系字符范围 2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时…