数注解(例如:
@RequestParam,@RequestHeader,@PathVariable,还有很多)来定义你需要的控制器方法。
? 可复用业务代码,无需复制。使用已有的业务对象作为命令对象或者表单对象而不是通过映射来继承特殊的框架基类。 ? 可定制的绑定和校验。将类型不匹配作为应用级别校验错误,能保留值,本地化日期和数字绑定等,而不是使用需要手动解析并转换业务对象的且只是字符串的表单对象。 ? 可定制的处理器映射和视图解析器。处理器映射和视图解析器策略的范围从简单的基于URL的配置到复杂的专用解析策略。Spring比WEB MVC框架更加灵活在授权一个特定技术上看来。
? 灵活的模型传输。模型传输是支持根据名字/值的Map,很容易集成任何视图的技术。
? 可定制的本地化和主题解析,支持JSP,无论是否使用Spring标签库,支持JSTL,支持不需要额外过度的Velocity等等。 ? 一个简单且强大的JSP标签库称为Spring标签库,提供的功能如数据绑定和主题。定制标签允许最大程度的灵活性就标记代码而言。
? 在Spring2.0中引入的一种JSP表单标签库能使在JSP界面中写表单更便捷。
? Beans的生命周期范围是当前HTTP请求或HTTP会话。它并不
是Spring MVC本身具体特征,而是Spring MVC使用了WebApplicationContext容器的。
图1.MVC架构
C.可插拔性的其他MVC的实现
如果你不想使用Spring的WEB MVC,但打算使用Spring提供的其它功能,你可以很容易地将你选择的WEB MVC框架和Spring整合。直接通过Spring的Context-LoaderListener启动一个Spring根应用上下文,通过它的ServletContext属性(或者Spring的各种帮助方法)来访问来自Struts或者WebWork的action。没有\参与, 所以也没有针对它整合的必要。从WEB层的角度看,你只要使用Spring作为库,带有根应用上下文的实例作为切入点。
你所注册的beans和Spring的服务随时可访问及时在没有Spring的WEB MVC的情况下。Spring并没有在这种情景下与Struts或者WebWork竞争。它只是提供了纯WEB MVC框架在很多领域所不具备的,从bean配置到数据访问和事务处理。所以你可以用Spring中间层和/或数据访问层来丰富你的应用,及时你只是想使用,好比,JDBC和Hibernate这样的抽象事务管理。
Spring的WEB MVC框架同很多其他的WEB框架一样,是由请求驱动的。围绕着一个能将请求分发到控制器的servlet设计,它还提供其他有利于WEB应用开发的功能。然而Spring的分法器所做的不仅如此。它完整的整合了Spring Ioc容器使你能够使用Spring所具有的其他功能。
Spring Web MVC分发器的请求处理工作流在下方的图说明。模式理解阅读器会识别分发器是“前端控制器”设计模式的表达式(这是一种Spring WEB MVC与其他许多领先框架共享的模式)。 分发器是一个真正的Servlet(它继承至HttpServlet基础类),并同样要在你的web应用的web.xml文件中声明。你需要映射你想让分发器处理的请求,通过在同个web.xml文件中使用URL映射。这是标准的J2EEservlet配置。
在上面的例子中,所有以.form结尾的请求会被
exampleDispatcherServlet处理。这只是配置Spring WEB MVC的第一步。你现在需要使用Spring Web MVC框架配置各种beans。当初始化一个分发器,框架会查找一个名为
[servlet-name]-servlet.xml在你的Web应用的WEB-INF目录下并创建里面所定义的beans,重定义所有全局同名定义的beans。
图2.请求处理工作流
Spring分发器使用特有的beans来处理请求和显示相应的视图。这些beans就是Spring框架的一部分。你可以在
WebApplicationContext中配置它们,配置方式就象配置其它bean的方式一样。然后,对于大多数bean来说,已经提供了合理的缺省配置,所以你最初不需要配置它们。
在你启动好分发器后,且有一个请求触发了指定的分发器,接下来分发器按以下步骤处理请求:
1.查找WebApplicationContext,并绑定该请求成为一个属性,使控制器和其他处理器在处理过程中能使用。缺省绑在分发器.WEB_APPLICATION_CONTEXT_ATTRIBUTE这个关键字上。 2.绑定本地化信息解析器到请求上,使处理过程中的处理器在处理请求(显示视图,准备数据等)时能解析本地化信息。如果你不需要本地化信息解析器,就忽视它。
3.绑定主题解析器到请求上,让视图之类的元素能决定使用哪个主题。如果你不需要主题,你可以忽视它。
4.如果你指定了多文件解析器,请求会被检测是否使用了multiparts;若是,请求会保存到MultipartHttpServletRequest中,以便处理过程中的其他处理器进一步处理。
5.查找合适的处理器。如果找到,为了准备模型数据或渲染视图,与该处理器(预处理器,后处理器,控制器)相关的执行链会被执行。
6.如果模型返回数据,就显示视图。否则,(可能由于安全因素,被前处理器或后处理器拦截了请求),无视图显示,因为请求已经被结束。
III. 控制器实现
Spring 2.5引入了基于注解的编程模型,MVC的控制器可以使用诸如@RequestMapping, @RequestParam, @ModelAttribute等注解。注解
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库MVC框架中英文对照外文翻译文献(2)在线全文阅读。
相关推荐: