MVC 把用户界面交互拆分到不同的三种角色中.
Model View Controller
之所以这样做的原因:1,你可能要使用数个不同的用户界面来表现相同的业务逻辑,如果同时承担两种责任,用户界面会变得过分复杂
2,与GUI隔离之后,domain Objects的维护和演化更容易,甚至可以让不同的开发者负责不同部分的开发.
用过MVC后,替换视图才成为可能,如果没有用MVC则没有这种可能.
Web开发的挑战
1.Web接口经常变化. 修改页面显示代码,无需修改业务对象甚至于Web 层控制代码.
2.Web 接口牵涉到复杂的标签.
3.Web 接口与GUI 有极大的差别.
4.HTTP请求只能携带字符串参数。
5.Web 接口使确认用户输入变得困难,因为我们对客户浏览器只有有限的控制权.GUI则有完全的控制权.
6.HTML只提供UI控制的有限选择.
7.保证web站点看起来正确并在所有常见浏览器中都正确工作会很困难.
8.存在许多效率考虑因素.
9.Web 接口的测试相当困难.
服务器小程序和视图技术都是建立可维护J2EEWEB应用所必需的。服务器小程序和助手类应该用来处理控制流和启动业务操作;JSP只应该用来再现内容.
MVC流程(Front Controller流程):
一条请求消息进入输入控制器,输入控制器从中取得信息,它随后把业务逻辑传送给一个合适的模型对象。这个模型对象和数据源交互,并且按照请求消息的要求进行处理,应答并收集信息,当做完这些后,它再把控制权交给输入控制器,输入控制器察看结果并且决定采用什么样的视图来显示应答消息。输入控制器不是直接传递给视图,通常,这是一个包括把数据放在某种HTTP会话对象中合适位置的过程,这个HTTP会话对象在输入控制器和视图之间共享.
好处:1.首先也是最重要的使用模型-视图-控制器的理由是要保证模型和WEB表现层的完全分离,这使得修改表现层以及加入其它的表现层都会容易。
2.同样把处理过程放到分离的事务脚本或分离的领域模型对象中也会使得它们容易测试。如果你正在使用服务器页面(JSP)作为视图,这一点很理要.
3.增加代码的重用性,切换视图代码,理想状态可以不用动控制代码和模型代码.
WEB层的设计目标。 两个目标:1.可维护性,2.可扩展性. 也仍包括软件的设计目标.要重用性,可测试性.
A:干净的WEB层把控制流和业务对象调用(Java对象处理)与表示(JSP页之类的视图构件处理)分隔开.(模块化思想)
B:细薄WEB层。意味着除了用户动作中启动业务处理和显示结果所必需的Java代码之外,Web 层不应该再含有任何Java代码.这也意味着WEB层只应该含有与WEB特定相关的控制逻辑
(如选择数据应该被显示在里面的布局),不应该含有业务逻辑(如数据检索).
考虑MVC时,关注两个主要的分离:从模型中分离表现和从视图中分离控制器.
视图的考虑:富客户, WEB浏览器,远程API和命令行界面.甚至同一应用程序的几个不同点上有不同的用户界面.
模型中分离表现是必需的,因为两者的责任不同,视图中分离控制器在WEB应用中是分离的,在富客户应用中则并不需要进行分离.
业务逻辑束缚于WEB层的应用的坏处:
1.可测试性.测试起来困难,业务逻辑依赖WEB环境.但事实上业务组件应该能被单独测试而不依赖环境.整体测试WEB接口来测试业务逻辑,这是相当困难的.
2.可重用性.降低重用业务逻辑代码的可能性.Model View Controller ,Model封装业务逻辑代码,有重用性,理想情况下可以用不同的View来显示Model的结果.MVC 使这种可能变为现实.
3.可扩展性.没有OO的设计,使得代码的可插入性为零.
在一个设计完善的J2EE 应用中,WEB层应该是一个以定义明确的业务接口为建立基础的细薄层.它应该只负责把用户动作转换成应用事件,以及把用户输入的结果处理成由WEB 接口的结果.
一个细薄的WEB层和一个干净的WEB层一样重要. 干净的Web层指Web层代码指模型与表示的分离. 细薄指Web层代码只应去调用业务代码而不是去实现业务代码,要把业务代码封装到后端业务对象中去.
MVC三者的职责.:
Controller 负责与业务对象交互,向业务对象传递必要的数据,然后获得业务对象计算的结果,包装为值对象,通过request对象(request.setAttribute()方法)传递到页面.包括必要的异常处理.
View负责显示由Controller发过来的值对象,包括必要的页面显示逻辑.
Model狭义说是值对象,广义指业务对象及业务对象计算的结果.
视图技术的三种选择:
1.转换视图 2.模板视图 3.两步视图
控制器
1.Front Controller 2.Page Controller.
Front Controller一般由两部分组成:一个Web处理程序和一个Command层次结构.
WEB处理程序是一个实际上接收来自Web服务器的POST或GET请求的对象。它从URL中得到信息,并且决定下一步的动作是什么,分发请求但不处理请求,请求委托给Command执行动
作.
Web处理程序可以动态或静态地决定运行哪一个Command,其中的静态行为包括解析URL并使用条件逻辑.
动态行为包括提取URL中的某个标准部分和用动态实例化去创建一个Command类.
静态方法的好处.1,2,3. 1.简明清晰的逻辑.2.在调度时可以执行编译时错误检查.3.在分析URL的时候可以拥有更多的灵活性.
动态方法的好处.允许你在不改动WEB处理程序的情况下增加新的Command.
MVC与Observer模式的关系. GUI的MVC是一种推模式,由模型对象生成事件去通知视图(监听器). Web层MVC是一种拉模式,由视图去获得模型数据,通过控制器做中间人.
MVC 实现方式. Front Controller 模式,Page Controller模式.
MVC的任务.
不同的客户端:富客户端,Web 浏览器,远程API,命令行界面,PDA. 其中最重要的MVC的实现差别富客户端和Web前端的差别.在于视图和控制器的是否完全分离.
Web可选的视图:模板视图,转换视图,两步视图.
分享到:
相关推荐
ASP.NET MVC作为微软官方的.NET平台下MVC解决方案,自诞生起就吸引了众多.NET平台开发人员的眼球。ASP.NET MVC从一开始的设计思路就与Struts不同,它的映射是利用路由配置而非xml,从而大大降低了开发复杂度,并且比...
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
**MVC(Model-View-Controller)模式是软件开发中的一种设计模式,尤其在Web应用开发中被广泛应用。C#是Microsoft开发的一种面向对象的编程语言,它与.NET框架紧密结合,支持构建各种类型的应用,包括MVC应用。在这...
ASP.NET MVC5是一个基于微软.NET Framework的开源web应用程序框架,专为构建动态、数据驱动的Web应用程序而设计。它结合了Model-View-Controller(MVC)设计模式、ASP.NET的功能性和HTML5的能力,提供了更高效、灵活...
**MVC模式与Servlet、JSP的协同工作** 在Web应用开发中,Model-View-Controller(MVC)模式是一种广泛采用的设计模式,它将应用程序的业务逻辑、数据和用户界面分离,使得开发和维护更加方便。在这个"经典MVC登录...
C# MVC(Model-View-Controller)经典框架是基于微软.NET平台的一种强大的Web应用程序开发模式。这个框架结合了MVC设计模式的灵活性和C#语言的强类型特性,为开发者提供了构建可维护、高性能和高度分层的Web应用的...
*** MVC 4是一个用于构建可扩展、基于标准的Web应用程序的框架,它使用了众所周知的设计模式,并且充分利用了***和.NET框架的强大功能。*** MVC框架允许开发者使用模型-视图-控制器(Model-View-Controller, MVC)...
MVC2.0入门必读教程程序源码 前言 ASP.NET MVC作为微软官方的MVC解决方案,推出有一段时间了。可以说自动推出以来,一直广受关注。在经历了漫长的Preview之后,前几天终于推出了其beta版。并且在官方文档中,微软...
标题 "PureMVC 中文版" 指的是 PureMVC 框架的一个中文版本,这是一款广泛应用的开源框架,特别设计用于构建富互联网应用程序(RIA),尤其是基于Adobe Flex和ActionScript 3的项目。PureMVC 提供了一种模块化、结构...
ASP.NET MVC是一个强大的框架,用于构建可维护性和灵活性极高的Web应用程序。它是Microsoft为开发者提供的一种基于模型-视图-控制器(MVC)设计模式的工具,使得开发人员能够更清晰地分离业务逻辑、数据处理和用户...
**ASP.NET MVC 5 框架详解** ASP.NET MVC 5 是 Microsoft 推出的一款用于构建可伸缩、高性能的 Web 应用程序的框架,它基于模型-视图-控制器(MVC)设计模式,结合了ASP.NET Web Forms 和 ASP.NET Web API 的优势,...
ASP.NET MVC4(Model-View-Controller)是微软推出的一款用于构建动态网站的开源框架,它基于ASP.NET平台,提供了一种分离关注点、结构清晰的开发模式。在这个"ASP.NET MVC4 安装文件"中,包含了适用于Visual Studio...
ASP.NET MVC4 CMS 是一个基于微软的ASP.NET MVC4框架构建的内容管理系统,它提供了一种高效、可扩展的方式来管理和展示网站内容。MVC(Model-View-Controller)设计模式是其核心,它将应用程序分为三个主要组件:...
ASP.NET MVC是一个强大的Web应用程序开发框架,由微软公司推出,用于构建可维护、高性能和具有优秀用户体验的Web应用。在本“asp.net mvc博客Blog源码”项目中,我们可以深入学习和理解ASP.NET MVC的核心概念和技术...
在IT行业中,MVC(Model-View-Controller)是一种广泛应用于软件开发的架构模式,尤其在Web应用领域中。这个模式将应用程序分为三个主要部分,每个部分都有明确的责任,从而提高了代码的可维护性和可扩展性。本项目...
**ASP.NET MVC 框架详解** ASP.NET MVC(Model-View-Controller)是一种轻量级、基于组件的Web应用程序架构,它由微软开发并应用于.NET Framework中,为开发者提供了构建可测试、灵活且易于维护的Web应用的强大工具...
ASP.NET MVC5 是微软开发的一款用于构建动态网站的框架,它结合了模型-视图-控制器(MVC)设计模式,使开发者能够更高效地构建可维护和测试的Web应用程序。在本入门教程中,我们将重点探讨如何在ASP.NET MVC5中实现...
ASP.NET MVC 是微软开发的一款用于构建动态Web应用程序的框架,它结合了ASP.NET的优势和Model-View-Controller(MVC)设计模式的灵活性。在这个"ASP.NET MVC 项目集合.zip"压缩包中,可能包含了多个ASP.NET MVC项目...
这个jar文件包含Spring MVC框架相关的所有类。 包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。 当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的...