您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 培训教案-Java-Spring-MVC
Non-disclosureConfidentialDocument,UnauthorizedCopyProhibited–Copyright2014,aaLinkageAllrightsreserved.2014年5月AUTOMOBILEALLIANCECHINA汽车生活服务提供商TMSpringMVC互联网业务支撑中心©2014联创车盟-IROCTM有车·有慧驾目录•MVC模式介绍•SpringMVC架构•SpringMVC重要组件*******-2-©2014联创车盟-IROCTM有车·有慧驾MVC模式介绍J2EE中的MVC*******-3-©2014联创车盟-IROCTM有车·有慧驾MVC来历•1982年•是一种思想•一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。•模型-视图-控制器(MVC)是XeroxPARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司JavaEE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。*******-4-©2014联创车盟-IROCTM有车·有慧驾MVC模式介绍•模型-视图-控制器(Model-View-Controller)*******-5-实体Bean、Entity、VO、FormBeanServlet、Struts、SpringJSP、HTML、XML把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。MVC模式是解决了展示以及业务逻辑实现的分离。让开发者可以专心地解决不同层的编码。也方便代码重用和测试和维护。©2014联创车盟-IROCTM有车·有慧驾常用的应用系统中的多层结构*******-6-Services层View展示层Controller控制层业务逻辑处理层数据持久化层(DAO)实体Bean、Entity层数据库©2014联创车盟-IROCTM有车·有慧驾MVC设计思想MVC是一种复合模式,结合了观察者模式、策略模式、组合模式、适配器模式。模型使用观察者模式,以便观察者更新,同时保持两者之间的解耦。控制器是视图的策略,视图使用组合模式实现用户界面。适配器模式用来将模型适配成符合现有视图和控制器的需要的模型。这些模式合作把MVC模式的三层解耦。*******-7-©2014联创车盟-IROCTM有车·有慧驾MVC设计思想视图(View)代表用户交互界面,对于Web应用来说,可以是HTML,也可能是jsp、XML和Applet等。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。*******-8-©2014联创车盟-IROCTM有车·有慧驾MVC设计思想模型(Model):是业务的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只是组织管理这些模型,以便于模型的重构和提高重用性。业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。*******-9-©2014联创车盟-IROCTM有车·有慧驾MVC设计思想控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。*******-10-©2014联创车盟-IROCTM有车·有慧驾JSPModel1架构Model1的基础是JSP文件,它由一些相互独立的JSP文件和其他一些JavaClass组成。这些JSP从HTTPRequest中获得所需要的数据,处理业务逻辑,然后将结果通过Response返前端浏览器。Model1的应该说是唯一的好处是“简单”,可以大大加快系统的开发进度。它把表现层和业务逻辑层柔和在一起,不利于以后的维护工作以及开发角色的分配,所以这种模式只能适合于小的系统开发。*******-11-©2014联创车盟-IROCTM有车·有慧驾JSPModel2架构Model2采用面向对象技术实现MVC模式从而扩展JSP/Servlet的模式。Model2是MVC在Web上的应用。*******-12-©2014联创车盟-IROCTM有车·有慧驾一个Model2规范实现的Web框架*******-13-©2014联创车盟-IROCTM有车·有慧驾一个Model2规范实现的Web框架视图层采用JSP实现;控制层采用Servlet实现,整个框架采用同一个Servlet,以实现请求的中转;模型层采用Java实现,主要决定用来做什么;在模型层后添加了一个DAO,目的是将决定做什么和具体怎么做分开。整个Web框架大致的流程是:首先客户端发送请求,提交JSP页面给中转器(Servlet);中转器根据客户的请求,选择相应的模型层,即Logic,Logic进行相应的逻辑处理;如果需要使用数据库,则通过DAO进行相应的数据库操作。*******-14-©2014联创车盟-IROCTM有车·有慧驾MVC的优缺点•MVC的优点•可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。•视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。•模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。•潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。•MVC的不足之处•增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。•视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。•视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。•目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。*******-15-©2014联创车盟-IROCTM有车·有慧驾SpringMVC架构*******-16-©2014联创车盟-IROCTM有车·有慧驾SpringMVC架构SpringMVC是结构最清晰的MVCModel2实现。它的Action也不叫Action,而是称做Controller;Controller接收request,response参数,然后返回ModelAndView(其中的Model不是Object类型,而是Map类型)。但在其它的WebFramework中,Action返回值一般都只是一个ViewName;Model则需要通过其它的途径(如request.attribute,Context参数,或Action本身的属性数据)传递上去。*******-17-©2014联创车盟-IROCTM有车·有慧驾SpringWebMVC请求处理流程*******-18-©2014联创车盟-IROCTM有车·有慧驾SpringMVC特点清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(commandobject)、表单对象(formobject)、模型对象(modelobject)、Servlet分发器(DispatcherServlet)、处理器映射(handlermapping)、视图解析器(viewresolver)等。每一个角色都可以由一个专门的对象来实现。强大而直接的配置方式:将框架类和应用程序类都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器(validator)的引用。可适配、非侵入:可以根据不同的应用场景,选择合适的控制器子类(simple型、command型、form型、wizard型、multi-action型或者自定义),而不是从单一控制器(比如Action/ActionForm)继承。*******-19-©2014联创车盟-IROCTM有车·有慧驾SpringMVC特点可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。可定制的绑定(binding)和验证(validation):比如将类型不匹配作为应用级的验证错误,这可以保存错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象。可定制的handlermapping和viewresolution:Spring提供从最简单的URL映射,到复杂的、专用的定制策略。与某些webMVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。灵活的model转换:在Springweb框架中,使用基于Map的键/值对来达到轻易地与各种视图技术的集成。*******-20-©2014联创车盟-IROCTM有车·有慧驾SpringMVC特点可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。简单而强大的JSP标签库(SpringTagLibrary):支持包括诸如数据绑定和主题(theme)之类的许多功能。JSP表单标签库:在Spring2.0中引入的表单标签库,使得在JSP中编写表单更加容易。SpringBean的生命周期可以被限制在当前的HTTPRequest或者HTTPSession。*******-21-©2014联创车盟-IROCTM有车·有慧驾SpringMVC重要组件*******-22-©2014联创车盟-IROCTM有车·有慧驾SpringMVC重要组件*******-23-•Springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。•DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller。•DispatcherServlet请请求提交到目标Controller。•Controller进行业务逻辑处理后,会返回一个ModelAndView。•Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对
本文标题:培训教案-Java-Spring-MVC
链接地址:https://www.777doc.com/doc-5524762 .html