Spring Web Flow 基于 Spring MVC 构建,允许实现网页应用的“流程”。流程封装了一系列步骤,引导用户执行某个业务任务。它跨越多个HTTP请求,具有状态,处理事务数据,可重用,并且可能具有动态和长时间运行的特性。
Spring Web Flow的最佳选择是具备状态的网页应用,并可控制导航,比如签机、申请贷款、购物车结账,甚至在表单中添加确认步骤。这些情景的共同点是以下一项或多项特征:
有明确的开始和终点。
用户必须按特定顺序通过一组屏幕。
这些变更直到最后一步才会最终确定。
一旦完成,交易不应该会被意外重复
Spring Web Flow 提供了一种声明式流定义语言,用于在更高抽象层次上创作流程。它允许它集成到多种应用中,而无需更改流程编程模型,包括 Spring MVC、JSF,甚至 Portlet Web应用。以下是具有导航需求的有状态网络应用中常见的问题:
想象流程非常困难。
应用程序有大量代码访问 HTTP 会话。
强制执行受控导航很重要,但无法实现。
想要完善的浏览器返回按钮支持似乎遥不可及。
浏览器和服务器在使用“返回”按钮时会不同步。
多个浏览器标签页会导致HTTP会话数据的并发问题。
Spring Web Flow 为上述问题提供了解决方案。