欢迎来到天天文库
浏览记录
ID:45723635
大小:192.00 KB
页数:29页
时间:2019-11-17
《第21章++Spring+的MVC框架》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第21章Spring的MVC框架Spring不但一个很好的集成框剪,它还提供了构建Web应用程序的全功能MVC模块。Spring的MVC框架非常强大并不逊色于其他专业的Web框架,如Struts、WebWork。但在国内SpringMVC应用的并不是特别多,原因可能是Struts太深入人心的缘故吧。虽然SpringMVC并不是本书的重点,但了解它的结构和原理也是十分有好处的。21.1SpringMVC简介Spring的MVCWeb框架是高度可配置的,而且包含多种视图技术,例如JSP、Velocity、Tiles和iText。SpringMVC分离
2、了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。21.1.1SpringMVC的结构Spring的web框架是围绕DispatcherServlet来进行设计的。DispatcherServlet的作用是将请求分发到不同的处理器。Spring的web框架包括可配置的处理器(handler)映射、视图(view)解析、本地化(local)解析、主题(theme)解析以及对上传文件解析。处理器是对Controller接口的实现,该接口仅仅定义了ModelAndViewhandleRequest(request,resp
3、onse)方法。可以通过实现这个接口来生成自己的控制器(也可以称之为处理器),但是从Spring提供的一系列控制器继承会更省事,比如AbstractController、AbstractCommandController和SimpleFormController。21.1.2SpringWebMVC框架的特点SpringWebMVC框架提供了大量独特的功能,包括:清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(commandobject)、表单对象(formobject)、模型对象(modelobject)
4、、Servlet分发器(DispatcherServlet)、处理器映射(handlermapping)、视图解析器(viewresolver)等等。每一个角色都可以由一个专门的对象来实现。强大而直接的配置方式:将框架类和应用类都作为JavaBean配置,支持在一个context中引用其他context的中JavaBean,例如,在web控制器中对业务对象和验证器(validator)的引用。21.1.2SpringWebMVC框架的特点可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要在类似ActionForm的子类中重复它们
5、的定义。可定制的绑定(binding)和验证(validation):比如将类型不匹配作为应用级的验证错误,这可以保存错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,只能使用字符串表单对象,需要手动解析它并转换到业务对象。可定制的handlermapping和viewresolution:Spring提供从最简单的的URL映射,到复杂的、专用的定制策略。与某些MVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。灵活。21.1.2SpringWebMVC框架的特点灵活的model转换:在Springweb框架中,使用
6、基于Map的名/值对来达到轻易地与各种视图技术的集成。可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。SpringBean的生命周期可以被限制在当前的HTTPRequest或者HTTPSession。准确的说,这并非SpringMVC框架本身特性,而应归属于SpingMVC使用的WebApplicationContext容器。21.2DispatcherServlet的功能和其它web框架一样,Spring的web框架是一个请求驱动的web框架,其
7、设计围绕一个中心的servlet进行,它能将请求分发给控制器,并提供其它功能帮助web应用开发。然而,Spring的DispatcherServlet所做的不仅仅是这些,它和Spring的IoC容器完全集成在一起,从而允许使用Spring的其它功能。21.2.1在Web服务器中配置DispatcherServletDispatcherServlet顾名思义实际上还是一个Servlet。和其它Servlet一样,DispatcherServlet定义在web应用的web.xml文件里。DispatcherServlet处理的请求必须在同一个web.
8、xml文件里使用url-mapping定义映射。如代码21-1所示演示了如何配置DispatcherServlet。21.2.2加载Be
此文档下载收益归作者所有