Spring Web Flow builds on Spring MVC and
allows implementing the "flows" of a web application. A flow
encapsulates a sequence of steps that guide a user through the
execution of some business task. It spans multiple HTTP requests,
has state, deals with transactional data, is reusable, and may be
dynamic and long-running in nature..

The sweet spot for Spring Web Flow are
stateful web applications with controlled navigation such as
checking in for a flight, applying for a loan, shopping cart
checkout, or even adding a confirmation step to a form.
What these scenarios have in common is one or more of the
following traits:

There is a clear start and an end point.

The user must go through a set of screens in a specific order.

The changes are not finalized until the last step.

Once complete it shouldn't be possible to repeat a transaction accidentally

Quick Start

Download

The recommended way to get started using spring-webflow in
your project is with a dependency management system – the snippet below can
be copied and pasted into your build. Need help? See our getting started guides
on building with Maven and
Gradle.

Spring Web Flow provides a declarative flow definition
language for authoring flows on a higher level of abstraction.
It allows it to be integrated into a wide range of applications
without any changes (to the flow programming model) including
Spring MVC, JSF, and even Portlet web applications.
The following are common issues observed in stateful web
applications with navigation requirements: