8.1.3 处理流程请求

我们在前一章曾经看到,DispatcherServlet 一般将请求分发给控制器。但是对于流程而言,我们需要一个 FlowHandlerMapping 来帮助 DispatcherServlet 将流程请求发送给 Spring Web Flow。在 Spring 应用上下文中,FlowHandlerMapping 的配置如下:

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
  <property name="flowRegistry" ref="flowRegistry" />
</bean>

你可以看到,FlowHandlerMapping 装配了流程注册表的引用,这样它就能知道如何将请求的 URL 匹配到流程上。例如,如果我们有一 个 ID 为 pizza 的流程,FlowHandlerMapping 就会知道如果请求的 URL 模式(相对于应用程序的上下文路径)是 /pizza 的话,就要将其匹配到这个流程上。

然而,FlowHandlerMapping 的工作仅仅是将流程请求定向到 Spring Web Flow 上,响应请求的是 FlowHandlerAdapter。FlowHandlerAdapter 等同于 Spring MVC 的控制器,它会响应发送的流程请求并对其进行处理。FlowHandler-Adapter 可以像下面这样装配成一个 Spring bean,如下所示:

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

这个处理适配器是 DispatcherServlet 和 Spring Web Flow 之间的桥梁。它会处理流程请求并管理基于这些请求的流程。在这里,它装配了流程执行器的引用,而后者是为所处理的请求执行流程的。

我们已经配置了 Spring Web Flow 所需的 bean 和组件。剩下就是真正定义流程了。我们随后将会进行这项工作。但首先,让我们先了解一下组成流程的元素。

Last updated