spring 的mvc框架

上传人:第*** 文档编号:48859891 上传时间:2018-07-21 格式:PPT 页数:29 大小:192KB
返回 下载 相关 举报
spring 的mvc框架_第1页
第1页 / 共29页
spring 的mvc框架_第2页
第2页 / 共29页
spring 的mvc框架_第3页
第3页 / 共29页
spring 的mvc框架_第4页
第4页 / 共29页
spring 的mvc框架_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《spring 的mvc框架》由会员分享,可在线阅读,更多相关《spring 的mvc框架(29页珍藏版)》请在金锄头文库上搜索。

1、第21章 Spring 的MVC框架 Spring不但一个很好的集成框剪,它还提供了构 建Web应用程序的全功能MVC模块。Spring 的MVC 框架非常强大并不逊色于其他专业的Web框架,如 Struts、WebWork。但在国内Spring MVC应用的并 不是特别多,原因可能是Struts太深入人心的缘 故吧。 虽然Spring MVC并不是本书的重点,但了解它的 结构和原理也是十分有好处的。21.1 Spring MVC简介 Spring的MVC Web 框架是高度可配置的,而且包 含多种视图技术,例如JSP、Velocity、Tiles和 iText。Spring MVC 分离了控

2、制器、模型对象、 分派器以及处理程序对象的角色,这种分离让它 们更容易进行定制。21.1.1 Spring MVC的结构 Spring的web框架是围绕DispatcherServlet来进 行设计的。DispatcherServlet的作用是将请求分 发到不同的处理器。Spring的web框架包括可配置 的处理器(handler)映射、视图(view)解析、 本地化(local)解析、主题(theme)解析以及 对上传文件解析。处理器是对Controller接口的 实现,该接口仅仅定义了ModelAndView handleRequest(request, response)方法。可以 通过

3、实现这个接口来生成自己的控制器(也可以 称之为处理器),但是从Spring提供的一系列控 制器继承会更省事,比如AbstractController、 AbstractCommandController和 SimpleFormController。21.1.2 Spring Web MVC框架的特点Spring Web MVC框架提供了大量独特的功能,包括: 清晰的角色划分:控制器(controller)、验证器( validator)、命令对象(command object)、表单对象( form object)、模型对象(model object)、Servlet分 发器(Dispatch

4、erServlet)、处理器映射(handler mapping)、视图解析器(view resolver)等等。 每一个 角色都可以由一个专门的对象来实现。 强大而直接的配置方式:将框架类和应用类都作为 JavaBean配置,支持在一个context中引用其他context的 中JavaBean,例如,在web控制器中对业务对象和验证器( validator)的引用。21.1.2 Spring Web MVC框架的特点可重用的业务代码:可以使用现有的业务对象作为命令或 表单对象,而不需要在类似ActionForm的子类中重复它们 的定义。 可定制的绑定(binding) 和验证(valida

5、tion):比如 将类型不匹配作为应用级的验证错误,这可以保存错误的 值。再比如本地化的日期和数字绑定等等。在其他某些框 架中,只能使用字符串表单对象,需要手动解析它并转换 到业务对象。 可定制的handler mapping和view resolution:Spring提 供从最简单的的URL映射,到复杂的、专用的定制策略。与 某些MVC框架强制开发人员使用单一特定技术相比,Spring 显得更加灵活。灵活。21.1.2 Spring Web MVC框架的特点 灵活的model转换:在Springweb框架中,使用基 于Map的名/值对来达到轻易地与各种视图技术的 集成。 可定制的本地化和主

6、题(theme)解析:支持在 JSP中可选择地使用Spring标签库、支持JSTL、支 持Velocity(不需要额外的中间层)等等。 Spring Bean的生命周期可以被限制在当前的HTTP Request或者HTTP Session。准确的说,这并非 Spring MVC框架本身特性,而应归属于Sping MVC 使用的WebApplicationContext容器。21.2 DispatcherServlet的功能和其它web框架一样,Spring的web框架是一个请求驱动的web框架 ,其设计围绕一个中心的servlet进行,它能将请求分发给控制器 ,并提供其它功能帮助web应用开发

7、。然而,Spring的 DispatcherServlet所做的不仅仅是这些,它和Spring的IoC容器 完全集成在一起,从而允许使用Spring的其它功能。21.2.1 在Web服务器中配置DispatcherServlet DispatcherServlet顾名思义实际上还是一个 Servlet。和其它Servlet一样, DispatcherServlet定义在web应用的web.xml文件 里。DispatcherServlet处理的请求必须在同一个 web.xml文件里使用url-mapping定义映射。如代 码21-1所示演示了如何配置DispatcherServlet。21.2

8、.2 加载Bean配置文件当DispatcherServlet配置好以后,DispatcherServlet接 收到与其对应的请求之时,处理就开始了。下面的列表描 述了DispatcherServlet处理请求的全过程: (1)找到WebApplicationContext并将其绑定到请求的一 个属性上,以便控制器和处理链上的其它处理器能使用 WebApplicationContext。默认的属性名为 DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE 。 (2)将本地化解析器(localResolver)绑定到请求上, 这样使得处理链上的处

9、理器在处理请求(准备数据、显示 视图等等)时能进行本地化处理。若不使用本地化解析器 ,也不会有任何副作用,因此如果不需要本地化解析,忽 略它就可以了。21.2.2 加载Bean配置文件(3)如果上传文件解析器被指定,Spring会检查每个接收 到的请求是否存在上传文件,如果是,这个请求将被封装 成MultipartHttpServletRequest以便被处理链中的其它处 理器使用。 (4)找到合适的处理器,执行和这个处理器相关的执行链 (预处理器,后处理器,控制器),以便为视图准备模型 数据。 (5)如果模型数据被返回,就使用配置在 WebApplicationContext中的视图解析器显

10、示视图,否则视 图不会被显示。有多种原因可以导致返回的数据模型为空 ,比如预处理器或后处理器可能截取了请求,这可能是出 于安全原因,也可能是请求已经被处理过,没有必要再处 理一次。21.2.3 Spring Web应用的上下文WebApplicationContext仅仅是一个拥有web应用必要功能的普通 ApplicationContext。它与一个标准的ApplicationContext的不 同之处在于,它能够解析加载主题,并且它知道自己与哪个 servlet相关联(通过ServletContext)。 WebApplicationContext被绑定在ServletContext上,当

11、需要的时 候,可以使用RequestContextUtils提供的静态方法找到 WebApplicationContext。 Spring的DispatcherServlet有一组特殊的bean,用来处理请求和 渲染相应的视图。这些bean包含在Spring的框架里,可以在 WebApplicationContext中配置,配置方式与配置其它bean相同。 这些bean中的每一个都在下文作详细描述。此刻读者只需知道它 们的存在,便继续对DispatcherServlet进行讨论。对大多数bean ,Spring都提供了合理的缺省值,所以在开始阶段,不必担心如 何对其进行配置。21.3 控制器(

12、Controller)控制器的概念是MVC设计模式的一部分,在其他Web框架中 常常被称为Action,而在Spring MVC中叫做Controller。 应用程序的行为通常被定义为服务接口,而控制器使得用 户可以访问应用所提供的服务。控制器解析用户输入,并 将其转换成合理的模型数据,从而可以进一步由视图展示 给用户。Spring以一种抽象的方式实现了控制器概念,这 样使得不同类型的控制器可以被创建。Spring本身包含表 单控制器、命令控制器、向导型控制器等多种多样的控制 器。 可以发现Controller接口仅仅声明了一个方法,它负责处 理请求并返回合适的模型和视图。虽然Controll

13、er接口是 完全抽象的,Controller接口仅仅定义了每个控制器都必 须提供的基本功能:处理请求并返回一个模型和一个视图 。但Spring也提供了许多可能会用到的控制器。可以直接 使用或者继承它们来实现需要个功能21.3.1 基类AbstractController 为了提供一套基础设施,所有的Spring控制器都 继承了AbstractController , AbstractController 提供了诸如缓存支持和 mimetype设置这样的功能。如表所示累出的 AbstractController包含的功能。21.3.2 其他实用的控制器 除了从AbstractController

14、继承来实现 Controller外,Spring还提供了一批实用的 Controller,供用直接使用。下面仅介绍一些比 较常用。 (1)MultiActionController将多个行为 (action)合并在一个控制器里,这样可以把相关 功能组合在一起。 (2)CommandControlle.rSpring的是Spring MVC 的重要部分。 (3)SimpleFormController 这是一个form cotnroller,当需要根据命令对象来创建相应的 form的时候,该类可以提供更多的支持。21.4 处理器映射(handler mapping) 通过处理器映射可以将web请

15、求映射到正确的处理 器(handler)上。HandlerMapping的基本功能是将 请求传递到HandlerExecutionChain上。首先,这 个HandlerExecutionChain必须包含一个能处理该 请求的处理器。其次,这个链也可以包含一系列 可以拦截请求的拦截器。当收到请求时, DispatcherServlet将请求交给处理器映射,让它 检查请求并找到一个适当的 HandlerExecutionChain。然后, DispatcherServlet执行定义在链中的处理器和拦 截器(interceptor)。21.5 视图解析器 视图解析器是控制器之后的处理过程,是控制器

16、 与视图之间的桥梁。Spring Web框架的所有控制 器都返回一个ModelAndView实例。Spring提供了 视图解析器供在浏览器显示模型数据,而不必被 束缚在特定的视图技术上。Spring内置了对JSP, Velocity模版和XSLT视图的支持。 ViewResolver是Spring的视图处理方式中特别重 要的接口。ViewResolver提供了从视图名称到实 际视图的映射。View处理请求的准备工作,并将 该请求提交给某种具体的视图技术。Spring为多 种视图都提供了不同的解析器。21.6 Spring对视图的支持 与其他Web框架一样Spring对视图也提供了很多支 持,如Spring的标签库、主题、支持其他模板。 这些概念在本书的前一篇Struts2中已经有过介绍 ,相信读者不会十分陌生。21.6.1 Spring的标签库 Spring的表单标签库存在spring.jar中。这个库 的描述文件(descriptor)是 spring

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号