Spring Book – Chapter 14 – Spring MVC and Spring Web Flow

Spring Web Flow

Spring WebFlow is a subproject of Spring Framework which provides you appropriate infrastructure components necessary to build rich web applications.

Spring WebFlow is a framework in itself for implementation stateful flows in your web application. It plugs into Spring MVC based application as a controller with ease making the right choice for navigation in your Spring MVC application. Spring WebFlow supports a variety of view technologies in which JSP and JSF view technology is natively supported, again making it right choice for web applications using these view technologies.

Spring WebFlow gives you capability to specify your web applications navigation rules, manage conversational state and also gives you ways by which to modularize and reuse your application code.

In this section we will go to some detail of Spring WebFlow and will also give details on how to integrate it with your Spring MVC based web application. The first few sections give you the main features, benefits and advantages of Spring WebFlow and slowly get you through the nitty-gritties of this wonderful framework.

History

Before going into the detail of Spring Web Flow, its features, advantages, benefits and above all its architecture, it is important to know its history.

In the year 2004 Erwin Vervaet developed Spring Web Flow project as a simple extension to the Spring MVC framework for providing infrastructural capabilities like navigational rule configuration and conversational state maintenance.

In the year 2005 Keith Donald introduced Spring Web Flow into the Spring portfolio and later on grew it into a full-fledged sub-project of the Spring Framework.

The 1.0 version of Spring Web Flow was release in the year 2006 and 2.0 version in the year 2008. The version 2.0 saw a major re-organization of Spring Web Flow and had a good integration with the native support for famous JavaServer Faces view technology. The current version at the time of writing this book is 2.3.1.

Benefits and Advantages

Spring Web Flow gives a number of benefits/advantages which best describe why it is still in business. These can be summarized in bullet points as shown below:

  • It captures web applications page or UI flow in a clear and readable way and with the use of SpringSouce Tool Suite can show these flow in a pictorial fashion.
  • Provides a consistent way of perfecting and navigating flows of your web application.
  • Makes sure that your web application works fine in all aspects when the user plays with the browsers back, forward and above all the refresh button. These buttons being usable for users can create big problems from the developer’s point of view to handle these in correct way.
  • Modularization and reuse is one of the key benefits of using Spring Web Flow.
  • Capability of managing sophisticated conversational state management is a very key benefit of Spring Web Flow.
  • Works well with all the powerful features of Spring Framework and leverages it to the maximum extend possible.

Spring Web Flow Architecture

Spring Web Flow by itself is not able to create a complete web application in all aspects. Spring Web Flow is at its best when it is used in conjunction with traditional web controllers in a web environment. Working well with controllers in web environment makes it ideal to be integrated with MVC based web application frameworks like Spring MVC, Struts, JSF etc. In that case Spring Web Flow works well and compliments these web application frameworks.

Marrying Spring Web Flow with any MVC based web application framework can be considered as marriage made in heaven in all aspects. Figure 14-12 below shows the interaction or rather working of Spring Web Flow with traditional controller based frameworks in a pictorial fashion.

Spring Web Flow with any standard FrontController based frameworks

Figure 14-12. Spring Web Flow with any standard FrontController based frameworks

The working of Figure 14-1 can be summarized as shown below:

  • Step 1 – client requests hit the Front Controller servlet. This servlet changes according to the MVC framework being integrated with.
  • Step 2 – according to the mapping specified in the configuration, the request is routed to either normal controllers or a flow controller
  • Step 3 – the controller returns the control now to the Front Controller with updated model and appropriate view to be rendered. The Font Controller uses the model, resolves the view and renders it.

It’s important to understand the various terminologies used in conjunction with Spring Web Flow. This section covers common spring Web Flow terminologies in some detail.

Page Visitors: 8013

The following two tabs change content below.
Tomcy John

Tomcy John

Blogger & Author at javacodebook
He is an Enterprise Java Specialist holding a degree in Engineering (B-Tech) with over 10 years of experience in several industries. He's currently working as Principal Architect at Emirates Group IT since 2005. Prior to this he has worked with Oracle Corporation and Ernst & Young. His main specialization is on various web technologies and acts as chief mentor and Architect to facilitate incorporating Spring as Corporate Standard in the organization.
Tomcy John

Latest posts by Tomcy John (see all)

Leave a Reply

Your email address will not be published. Required fields are marked *