Spring学习笔记之Spring Web Flow

本文详细介绍了Spring Web Flow与Spring MVC的集成,包括配置Web Flow、流程组件(状态、转移和流程数据)的使用,以及如何在实际案例中实现一个订购披萨的流程。Spring Web Flow作为Spring MVC的扩展,提供了强大的流程控制能力,通过分离流程定义和实现,简化了复杂应用的开发。
摘要由CSDN通过智能技术生成

Spring Web Flow 是Spring MVC 的扩展,它支持开发基于流程的应用程序。它将流程的定义与实现流程行为的类和视图分离开来。

1.配置Web Flow

在Spring MVC上下文定义,添加的命名空间:

 xmlns:flow="http://www.springframework.org/schema/webflow-config"
    xsi:schemaLocation="
    http://www.springframework.org/schema/webflow-config 
    http://www.springframework.org/schema/webflow=config/spring-webflow-config-2.3.xsd

完整配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:flow="http://www.springframework.org/schema/webflow-config"
    xsi:schemaLocation=" http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/webflow-config 
    http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd">

    <!-- flow-executor流程执行器 -->
    <flow:flow-executor id="flowExecutor"/>

    <!-- 流程注册表 -->
    <flow:flow-registry id="flowRegistry" base-path="/WEB-INF/flows">
        <flow:flow-location-pattern value="*-flow.xml"/>
        <!-- 这样,结合base-path属性,凡是在base-path下,且以-flow.xml结尾的文件都将视为流程定义 -->
        <!-- 当然,也可以不要base-path,像下面这样直接定义 ,id可以不写,访问这个流程的时候用/id即可-->
        <flow:flow-location path="/WEB-INF/flows/springpizza.xml" id="pizza"/>
    </flow:flow-registry>

    <!-- 定义HandlerMapping -->
    <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
        <property name="flowRegistry" ref="flowRegistry"/>
    </bean>

    <!-- 定义HandlerAdapter -->
    <bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
        <property name="flowExecutor" ref="flowExecutor"/>
    </bean>
</beans>

流程执行器:会为用户创建并启动一个流程执行实例。当流程暂停的时候(如为用户展示视图时),流程执行器会在用户执行操作后恢复流程。
流程注册表:加载流程定义文件并让流程执行器能够使用它们。
个人认为,Spring WebFlow的实现的核心就是基于其实现了HandlerMapping和HandlerAdapter。

2.流程组件

流程是由三个主要元素定义的:状态、转移和流程数据。状态是流程中事件发生的地点。转移用来连接状态。流程数据是流程的当前状况。

2.1 状态

Spring Web Flow定义了五种不同类型的状态:

状态类型 它是用来做什么的
行为(Action) 行为状态时流程逻辑发生的地方
决策(Decision) 决策状态将流程纷飞两个方向,他是基于流程数据的评估结果来确定流程方向
结束(end) 结束状态时流程的最后一站,一旦进入结束状态,流程就会终止
子流程(Subflo) 子流程状态会在当前正在运行的流程上下文中启动一个新的流程
视图(view) 视图状态会暂停流程并邀请用户参与流程

视图状态:

<view-state id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值