织梦cms做电影网站,昌吉市住房和城乡建设局网站,工作服厂家无锡 帛裳服饰专业,平湖网站建设公司什么是MVC#xff1f; MVC是一种架构模式 --- 程序分层#xff0c;分工合作#xff0c;既相互独立#xff0c;又协同工作 MVC是一种思考方式 --- 需要将什么信息展示给用户? 如何布局#xff1f; 调用哪些业务逻辑#xff1f; MVC流程图如下图所示#xff1a; MVC核心思… 什么是MVC MVC是一种架构模式 --- 程序分层分工合作既相互独立又协同工作 MVC是一种思考方式 --- 需要将什么信息展示给用户? 如何布局 调用哪些业务逻辑 MVC流程图如下图所示 MVC核心思想业务数据抽取同业务数据实现相分离 总结 模型层(M) 业务数据的信息表示关注支撑业务的信息构成通常是多个业务实体的组合 视图层(V) 为用户提供UI重点关注数据的呈现 控制器(C) 接受用户请求并调用相应的模型处理 (相当于一个总调配中心有什么需求就去调用相应模型进行处理最后通过视图给用户进行展示) SpringMVC的原理 1 首先用户发出请求请求到达SpringMVC的前端控制器DispatcherServlet, 2 前端控制器根据用户的url请求处理器映射器(HandlerMapping)查找匹配该url的handler并返回一个执行链(HandlerExecutionChain), 3 前端控制器再请求处理器适配器(HandlerAdapter)调用相应的handler进行处理并返回给前端控制器一modelAndView 4 前端控制器再请求视图解析器(ViewResolver)对返回的逻辑视图进行解析 5 最后前端控制器将返回的视图进行渲染并把数据装入到request域返回给用户。 注DispatcherServlet作为springMVC的前端控制器负责接收用户的请求并根据用户的请求返回相应的视图给用户分发调度 补充 为什么叫前端控制器前端又是什么 举个例子假如你去医院看病通过向分诊台的医院描述自己的病情就可以得到医生的指导具体去看外科、内科或者神经科等等这里我们的分诊台就扮演着前端控制器(Dispatcher)的角色也叫做调度器而各个科室就扮演着控制器(Controller)的角色,因为分诊台是在具体各个科室之前所以这个模式就叫做前端控制器。 MVC设计思想 MVC英文即Model-View-Controller即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离这样一个应用被分成三个层——模型层、视图层、控制层。 视图(View)代表用户交互界面对于Web应用来说可以概括为HTML界面但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性界面的处理也变得具有挑战性。一个应用可能有很多不同的视图MVC设计模式对于视图的处理仅限于视图上数据的采集和处理以及用户的请求而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户以及将用户界面的输入数据和请求传递给控制和模型。 模型(Model)就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作模型接受视图请求的数据并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子它从应用技术实现的角度对模型做了进一步的划分以便充分利用现有的组件但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件从而减少了技术上的困难。对一个开发者来说就可以专注于业务模型的设计。MVC设计模式告诉我们把应用的模型按一定的规则抽取出来抽取的层次很重要这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远也不能太近。MVC并没有提供模型的设计方法而只告诉你应该组织管理这些模型以便于模型的重构和提高重用性。我们可以用对象编程来做比喻MVC定义了一个顶级类告诉它的子类你只能做这些但没法限制你能做这些。这点对编程的开发人员非常重要。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存持续化。比如将一张订单保存到数据库从数据库获取订单。我们可以将这个模型单独列出所有有关数据库的操作只限制在该模型中。 控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起共同完成用户的请求。划分控制层的作用也很明显它清楚地告诉你它就是一个分发器选择什么样的模型选择什么样的视图可以完成什么样的用户请求。控制层并不做任何的数据处理。例如用户点击一个连接控制层接受请求后, 并不处理业务信息它只把用户的信息传递给模型告诉模型做什么选择符合要求的视图返回给用户。因此一个模型可能对应多个视图一个视图可能对应多个模型。 MVC的优点 大部分用过程语言比如ASP、PHP开发出来的Web应用初始的开发模板就是混合层的数据编程。例如直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小很难满足用户的变化性需求。MVC要求对应用分层虽然要花费额外的工作但产品的结构清晰产品的应用通过模型可以得到更好地体现。 首先最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下可能有多种方式访问应用的要求。例如订单模型可能有本系统的订单也有网上订单或者其他系统的订单但对于订单的处理都是一样也就是说订单的处理是一致的。按MVC设计模式一个订单模型以及多个视图即可解决问题。这样减少了代码的复制即减少了代码的维护量一旦模型发生改变也易于维护。 其次由于模型返回的数据不带任何显示格式因而这些模型也可直接应用于接口的使用。 再次由于一个应用被分离为三层因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。 控制层的概念也很有效由于它把不同的模型和不同的视图组合在一起完成不同的请求因此控制层可以说是包含了用户请求权限的概念。 最后它还有利于软件工程化管理。由于不同的层各司其职每一层不同的应用具有某些相同的特征有利于通过工程化、工具化产生管理程序代码。 思想 MVC应用程序总是由三个部分组成.Event(事件)导致Controller改变Model或View,或者同时改变两者.只要Controller改变了Models的数据或者属性所有依赖的View都会自动更新.类似的,只要Controller改变了ViewView会从潜在的Model中获取数据来刷新自己 。 MVC模式是一个复杂的架构模式,其实现也显得非常复杂,但多种设计模式结合在一起,使MVC模式的实现变得相对简单易行.Views可以看作一棵树,显然可以用Composite Pattern来实现.Views和Models之间的关系可以用Observer Pattern体现.Controller控制Views的显示,可以用Strategy Pattern实现.Model通常是一个调停者,可采用Mediator Pattern来实现. 转载于:https://www.cnblogs.com/williamjie/p/9109619.html