`
youyun_2008
  • 浏览: 113688 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

转 Spring Web Flow 2.0入门 - 配置Spring Web Flow 2.0的基础

阅读更多
配置好 Spring Web MVC 的环境后,接下来就可以往里面加入 Spring Web Flow 2.0 的配置。不过,要搞明白 Spring Web Flow 2.0 的配置,必须先要了解相关的理论知识。

FlowRegistry

FlowRegistry 是存放 flow 的仓库,每个定义 flow 的 XML 文档被解析后,都会被分配一个唯一的 id ,并以 FlowDefinition 对象的形式存放在 FlowResigtry 中。 FlowRegistry 配置方式可参看清单 8。

说明

以下的示例清单中的 XML 配置元素默认使用了 webflow 名字空间,这也是 Spring Web Flow 习惯上的名字空间,参看教程后面 webflow-config.xml 文件,可以更多了解 webflow 名字空间。

清单 8 FlowRegistry 的配置

<webflow:flow-registry id="flowRegistry">

<webflow:flow-location path="/WEB-INF/flows/shopping.xml" id=”shopping”/>

</webflow:flow-registry>

每个 flow 都必须要有 id 来标识,如果在配置中省略,那么该 flow 默认的 id 将是该定义文件的文件名去掉后缀所得的字符串。

FlowExecutor

FlowExecutor 是 Spring Web Flow 的一个核心接口,启动某个 flow ,都要通过这个接口来进行。从配置角度来说,只要保证有个 FlowExecutor 就可以了, Spring Web Flow 的默认行为已经足够。默认配置参看清单9。

清单 9 FlowExecutor 的配置

<webflow:flow-executor id="flowExecutor" />

哪个 flow 被执行了?

FlowRegistry 中注册的 flow 可能会有多个,但前面介绍过,每个 flow 都会有 id ,没有配置的,也会有个默认值, FlowExecutor 就是通过 id 来找出要执行的 flow 。至于这个 id ,则是要由用户来指定的。在默认配置情况下,如果客户端发送了如下URL请求:

http://localhost:8080/CartApp/spring/shopping

则从 Spring Web Flow 的角度来看,这个 URL 就表示客户想要执行一个 id 为“ shopping ”的 flow ,于是就会在 FlowRegistry 中查找名为“ shopping ”的 flow,由FlowExecutor负责执行。

Spring Web Flow 如何与 Spring Web MVC 整合在一起?

客户端发送的请求,先会由 servlet 容器(本教程示例中即为 Tomcat )接收, servlet 容器会找到相应的应用程序(本教程中即为 CartApp ),再根据 web.xml 的配置找到出符合映射条件的 servlet 来处理。 Spring Web MVC 中处理请求的 servlet 是 DispatcherServlet ,如果请求的路径满足 DispatcherServlet 的映射条件,则 DispatcherServlet 会找出 Spring IoC 容器中所有的 HandlerMapping ,根据这些 HandlerMapping 中匹配最好的 handler (一般情况下都是 controller ,即控制器)来处理请求。当 Controller 处理完毕,一般都会返回一个 view (视图)的名字,DispatcherServlet再根据这个view的名字找到相应的视图资源返回给客户端。

搞清楚 Spring Web MVC 处理请求的流程后,基本上就可以明白要整合 Spring Web MVC 与 Spring Web Flow 所需要的配置了。为了让客户端的请求变成执行某个 flow 的请求,要解决以下几个问题:

需要在某个 HandlerMapping 中配置负责处理 flow 请求的 handler (或 controller )

该handler (或 controller )要负责启动指定的 flow

flow 执行过程中以及执行完成后所涉及的视图应呈现给客户端

现在,需要一种接收执行 flow 的请求,然后根据请求来启动相应 flow的handler (处理器), Spring Web Flow 2.0 提供了两种方案可供选择。第一种方案是自己编写实现了 FlowHandler 接口的类,让这个类来实现这个功能。第二种方案是使用一个现成的叫做 FlowController 的控制器。第一种方案灵活性比较大,在许多场合可能也是唯一的选择,但对每个 flow 都需要编写相应的 FlowHandler 。本教程的示例采用第二种方案,对 FlowHandler 的介绍可参看 Spring Web Flow 2.0 自带的文档。 FlowController 其实是个适配器,一般来讲,我们只要明白 FlowController 可根据客户端请求的结尾部分,找出相应的 flow 来执行。配置 FlowController只需指定FlowExecutor即可,具体配置见清单10:

清单 10 FlowController 的配置

<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
<property name="flowExecutor" ref="flowExecutor"/>
</bean>

另外还需在 HandlerMapping 中指明 /shopping.do 请求由 flowController 来处理,配置见清单11:

清单 11 在 viewMappings 中添加配置

<bean
id="viewMappings"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/shopping.do=flowController
</value>
</property>
…...
</bean>

需要指出的是,不管设成 /shopping.do 还是设成 /shopping ,或者 /shopping.htm ,效果都是一样的, flowController 都会去找 id 为 shopping的flow来执行。

FlowBuilder Services

清单 8 所示 FlowRegistry 的配置,其中省略了 flow-registry 元素中一项比较重要的属性, flow-builder-services 。 flow-builder-services 属性的配置指明了在这个 flow-registry “仓库”里的 flow 的一些基本特性,例如,是用 Unified EL 还是 OGNL 、 model (模型)对象中的数据在显示之前是否需要先作转换,等等。在本示例中,我们需要在 flow-builder-services 属性中指明 Spring Web Flow 中所用到的 view ,由 Spring Web MVC 的“ View Resolver ”来查找,由 Spring Web MVC 的“ View Class”来解析,最后呈现给客户。具体配置参看清单12:

清单 12 flow-builder-services 配置

<webflow:flow-builder-services id="flowBuilderServices"
view-factory-creator="mvcViewFactoryCreator"/>

<bean
id="mvcViewFactoryCreator"
class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers" ref="viewResolver"/>
</bean>

Spring Web Flow 2.0 配置小结

所有这些配置的目的无非是两个:一是要让客户端的请求转变成 flow 的执行,二是要让 flow 执行过程中、或执行结束后得到的视图能返还给客户端。如果对这里的讲解还不是很清楚,可先看下一节实际的配置,再回过头来看本章内容,以加深理解。
分享到:
评论

相关推荐

    Spring Web Flow 2.0 入门 例子

    **Spring Web Flow 2.0 入门指南** Spring Web Flow 是一个用于构建高度交互式Web应用程序的框架,它专注于管理用户会话的状态和流程控制。这个框架在Spring MVC之上提供了一种更高级的方式来处理复杂的用户导航...

    Spring Web Flow 2.0 购物车示例

    Spring Web Flow 2.0 购物车示例,资源来自http://www.cnblogs.com/xwdreamer/archive/2011/11/10/2296939.html.建议对照文章学习

    spring-framework-2.0-m1-with-dependencies.zip

    "spring-framework-2.0-m1-with-dependencies.zip"是该版本的一个早期里程碑版本,包含了所有依赖,便于开发者快速入门和项目部署。 1. **IoC(Inversion of Control)容器**: Spring的核心是IoC容器,它负责管理...

    spring webflow 2.0所有最新开发包及文档和用例

    在`spring-webflow-2.0.8.RELEASE`这个压缩包中,你将找到Spring Webflow 2.0.8版本的所有相关资源,包括库文件、文档和可能的示例项目。这些资源可以帮助你搭建开发环境,理解其工作原理,并进行实践操作。 总的来...

    spring webflow升级-从1.0 到 2.0

    在 SWF 1 中,可以通过标准的 Spring Bean XML 配置或使用 `webflow-config-1.0` Schema 进行配置。而在 SWF 2 中,Schema 配置成为唯一的选择。这意味着需要使用特定的 Namespace 来配置 Web Flow 相关的组件。 ##...

    spring webflow入门基础

    ### Spring Webflow 入门基础 #### 购物车用例 首先,我们通过一个购物车用例来深入理解Spring Web Flow的应用场景及其优势。购物车作为一个典型的电子商务应用场景,涉及用户选择商品、查看购物车内容、确认订单...

    spring-webflow-reference

    这些知识点构成了Spring Web Flow的核心概念和使用方法,为开发人员提供了理解和使用Spring Web Flow框架的基础。通过阅读Spring Web Flow的参考指南,开发者可以掌握如何定义和管理Web应用中的复杂业务流程,以及...

    spring web flow demo

    Spring Web Flow 2.0 入门 本教程分析了 Spring Web Flow 2.0 的技术要点,并且通过创建一个示例应用程序,展示了 Spring Web Flow 2.0 的基本知识。 开始之前 关于本教程 本教程通过一个简化的购物车应用,介绍了...

    SPRING WEB-FLOW入门教程

    Spring Web Flow (SWF) 是一个专门为管理Web应用程序复杂页面流程设计的框架,它是Spring Framework的一个独立模块,常用于Spring Web应用开发,其中包括Spring MVC。SWF的主要目标是提供一种优雅的方式来处理多步骤...

    spring web flow reference 2.4.0

    为了使用Spring Web Flow的夜间构建或里程碑版本,可以通过在Maven配置文件中添加如下内容: ```xml &lt;id&gt;spring-milestone &lt;name&gt;Spring Milestone Repository &lt;url&gt;https://repo.spring.io/milestone&lt;/url&gt; ``...

    springfox-spring-web-3.0.0-API文档-中文版.zip

    赠送jar包:springfox-spring-web-3.0.0.jar; 赠送原API文档:springfox-spring-web-3.0.0-javadoc.jar; 赠送源代码:springfox-spring-web-3.0.0-sources.jar; 赠送Maven依赖信息文件:springfox-spring-web-...

    Spring-WebFlow入门中文文档

    Spring Web Flow 是一个用于构建复杂 Web 应用程序页面流程管理的框架,它是 Spring Framework 的一个独立模块。Spring Web Flow 的目标是为了解决在 Web 应用中管理和重用页面流程的问题,尤其是在需要多步骤导航...

    Spring-Web-Flow-帮助文档

    Spring Webflow 是一个用于构建富用户交互Web应用的框架,特别关注流程管理和状态维护。它扩展了Spring MVC,提供了一种声明式的方式来管理用户在Web应用中的导航路径,即所谓的“流程”。本文档将深入探讨Spring ...

    spring-webflow-reference.pdf

    《Spring WebFlow参考指南》是Spring框架中关于Web应用程序流程管理的重要参考资料,它详细阐述了如何使用Spring WebFlow构建动态、交互式的Web应用。Spring WebFlow是一个轻量级的框架,旨在解决MVC架构中复杂流程...

    Spring_Web_Flow_2[1].0_入门.pdf

    ### Spring Web Flow 2.0 入门指南 #### 一、Spring Web Flow 简介 Spring Web Flow 是 Spring 框架的一个子项目,主要用于处理 Web 应用程序中的流程控制。它解决了跨多个请求的用户与服务器之间有状态交互的问题...

    spring web flow入门

    《Spring Web Flow 入门详解》 随着Web应用的不断扩展和复杂化,管理页面流程逐渐成为了一项挑战。在大型应用中,如何清晰地定义和控制应用的导航逻辑,尤其是涉及多步骤交互过程时,成为了开发者的关注焦点。...

    Spring Web Flow 2小教程

    ### Spring Web Flow 2.0 入门指南 #### 一、Spring Web Flow 2.0 概览 Spring Web Flow (SWF) 是Spring框架下的一个子项目,旨在简化Web应用程序中的工作流程管理和状态管理。它特别适用于处理复杂的用户交互场景...

    Spring Web Flow权威指南

    根据提供的标题、描述和标签,本篇文章将围绕“Spring Web Flow”这一主题展开,深入探讨其核心概念、架构原理及应用场景等内容。 ### Spring Web Flow概述 Spring Web Flow是Spring Framework的一部分,它为Web...

    spring webflow 官方中文版权威指南PDF

    Spring WebFlow 是一个用于构建高度交互式Web应用的框架,它扩展了Spring MVC的功能,专注于管理应用程序中的流程和状态。本官方中文版权威指南PDF详细介绍了如何使用Spring WebFlow来构建动态、流程导向的Web应用。...

Global site tag (gtag.js) - Google Analytics