`
liudong19870227
  • 浏览: 31854 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring Web Flow的初步认识

阅读更多

 


 Spring Web Flow 2.0 就是 Spring Web MVC 的一个扩展,如果粗略一些来讲,所谓 flow 就相当于 Spring Web MVC 中一种特殊的 controller ,这种 controller 可通过 XML 文件加以配置,因此在使用 Spring Web Flow 2.0 前须先对 Spring Web MVC进行配置,步骤如下:

创建 Web 应用的目录结构
在 /WEB-INF/lib 下导入相关类库
   commons-logging.jar
   jstl.jar
   standard.jar
   spring-webmvc.jar
   spring.jar
在 Web 应用部署描述符文件 web.xml 中声明 DispatcherServlet 并指定配置文件
添加 DispatcherServlet 映射
创建 web-application-config.xml 文件
创建 webmvc-config.xml 文件
创建 index.jsp

一、创建 Web 应用的目录结构
本示例应用将采用 eclipse Dynamic Web Project 向导默认生成的目录结构,在 WEB-INF 目录下添加 config 和 flows 子目录,其中 config 子目录用来存放各种配置文件, flows 子目录下存放 Spring Web Flow 的定义文件。

二、声明 DispatcherServlet 并指定配置文件,添加 DispatcherServlet 映射
为使用 Spring Web MVC ,须在 web.xml 中声明 DispatcherServlet ,要让 DispatcherServlet 处理所有以 /spring/ 开头的请求,代码见web.xml。

 

 

三、创建 web-application-config.xml,代码见web-application-config.xml。


四、创建 webmvc-config.xml,代码见webmvc-config.xml。

 

五、创建flows。

 

六、创建Jsp页面。

 

工程截图如下:

 

web.xml代码:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>CartApp</display-name>

	<servlet>
		<servlet-name>CartServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/config/web-application-config.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>CartServlet</servlet-name>
		<url-pattern>/spring/*</url-pattern>
	</servlet-mapping>
	
</web-app>

 

 web-application-config.xml代码:

 

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">

	<!-- Imports the configurations of the different infrastructure systems of the application -->
	<import resource="webmvc-config.xml" />
	<import resource="webflow-config.xml"/>

</beans>

 

webflow-config.xml代码:

 

<?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:webflow="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"> 
  <webflow:flow-executor id="flowExecutor"/> 
  <!-- 所有 flow 定义文件位置在此配置, flow-builder-services 用于配置 flow 的特性 -->
  <webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices"> 
    <webflow:flow-location path="/WEB-INF/flows/shopping.xml" id="shopping"/> 
    <webflow:flow-location path="/WEB-INF/flows/addToCart.xml" id="addToCart"/> 
  </webflow:flow-registry> 
  <!--Web Flow 中的视图通过 MVC 框架的视图技术来呈现 -->
  <webflow:flow-builder-services id="flowBuilderServices" 
    view-factory-creator="mvcViewFactoryCreator"/> 
  <!-- 指明 MVC 框架的 view resolver ,用于通过 view 名查找资源 -->
  <bean id="mvcViewFactoryCreator" 
    class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator"> 
    <property name="viewResolvers" ref="viewResolver"/> 
  </bean>
</beans>

 

 

webmvc-config.xml代码:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView">
		</property>
		<property name="prefix" value="/WEB-INF/jsp/">
		</property>
		<property name="suffix" value=".jsp">
		</property>
	</bean>
	<bean id="viewMappings"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<!-- /shopping.do 请求由 flowController 来处理 -->
		<property name="mappings">
			<value> /shopping.do=flowController </value>
		</property>
		<property name="defaultHandler">
			<!-- UrlFilenameViewController 会将 "/index" 这样的请求映射成名为 "index" 的视图 -->
			<bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
		</property>
	</bean>
	<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
		<property name="flowExecutor" ref="flowExecutor" />
	</bean>
</beans>

 

addToCart.xml代码:

 

<?xml version="1.0" encoding="UTF-8"?> 
<flow xmlns="http://www.springframework.org/schema/webflow" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.springframework.org/schema/webflow 
    http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"> 
  
  <var name="productService" class="samples.webflow.ProductService" />
  <on-start> 
    <set name="requestScope.productId" value="requestParameters.productId"/> 
  </on-start> 
  <action-state id="addToCart"> 
    <evaluate expression="cart.addItem(productService.getProduct(productId))"/> 
    <transition to="productAdded"/> 
  </action-state> 
  <end-state id="productAdded"/> 
</flow>

 

 

shopping.xml代码:

 

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

	<var name="productService" class="samples.webflow.ProductService" />
	<var name="mycart" class="samples.webflow.Cart" />
	<on-start>
		<set name="conversationScope.cart" value="mycart"></set>
	</on-start>
	<view-state id="viewCart" view="viewCart">
		<on-render>
			<evaluate expression="productService.getProducts()" result="viewScope.products" />
		</on-render>
		<transition on="submit" to="viewOrder" />
		<transition on="addToCart" to="addProductToCart" />
	</view-state>
	<subflow-state id="addProductToCart" subflow="addToCart">
		<transition on="productAdded" to="viewCart" />
	</subflow-state>
	<view-state id="viewOrder" view="viewOrder">
		<transition on="confirm" to="orderConfirmed">
		</transition>
	</view-state>
	<view-state id="orderConfirmed" view="orderConfirmed">
		<transition on="returnToIndex" to="returnToIndex">
		</transition>
	</view-state>
	<end-state id="returnToIndex" view="externalRedirect:servletRelative:/index.jsp">
	</end-state>

</flow>

 

Java代码省略,注意实现Serializable接口。

 

分享到:
评论

相关推荐

    spring web flow reference 2.4.0

    ### Spring Web Flow 2.4.0 Reference Guide关键知识点 #### 一、Spring Web Flow简介与新特性 ##### 1.1 引言 Spring Web Flow(SWF)是Spring框架的一部分,它提供了一种强大的方式来管理Web应用程序中的流程...

    Spring Web Flow权威指南

    根据提供的标题、描述和标签,本篇文章将围绕“Spring Web Flow”这一主题展开,深入探讨其核心概念、架构原理及应用场景等内容。 ### Spring Web Flow概述 Spring Web Flow是Spring Framework的一部分,它为Web...

    spring webflow的一个例子

    Spring WebFlow 是一个用于构建高度交互式和流程导向型Web应用程序的框架,它扩展了Spring MVC的功能,专注于管理用户交互的流程。这个例子中的"CartApp3"很可能是一个基于Spring WebFlow实现的购物车应用程序。 在...

    Spring Web Flow API(Spring Web Flow 开发文档).CHM

    Spring Web Flow 。 官网 Spring Web Flow API。 Spring Web Flow 开发文档。

    Spring Web Flow 介绍.rar

    **Spring Web Flow 深入解析** Spring Web Flow 是一个基于Spring框架的开源库,它专注于构建复杂的Web应用程序中的导航逻辑和状态管理。这个库旨在解决传统MVC框架在处理多步骤交互流程时的局限性,例如用户填写...

    spring web flow权威指南

    《Spring Web Flow权威指南》是针对Spring Web Flow框架的一本深度解析书籍,旨在帮助开发者全面理解和熟练运用这一强大的web应用程序开发工具。Spring Web Flow是一种用于构建动态web交互体验的轻量级框架,它允许...

    spring webflow 官方中文版权威指南PDF

    Spring WebFlow 是一个用于构建高度交互式Web应用的框架,它扩展了Spring MVC的功能,专注于管理应用程序中的流程和状态。本官方中文版权威指南PDF详细介绍了如何使用Spring WebFlow来构建动态、流程导向的Web应用。...

    spring webflow 例子

    Spring Web Flow是一个强大的Java框架,专门用于构建富有交互性和流程导向的Web应用程序。它扩展了Spring MVC,提供了对用户会话流程的管理,使得开发者能够更有效地控制用户在应用程序中的导航路径。在这个“spring...

    spring web flow入门

    《Spring Web Flow 入门详解》 随着Web应用的不断扩展和复杂化,管理页面流程逐渐成为了一项挑战。在大型应用中,如何清晰地定义和控制应用的导航逻辑,尤其是涉及多步骤交互过程时,成为了开发者的关注焦点。...

    spring-webflow-reference

    Spring Web Flow是一个用于定义、执行和管理Web应用中的复杂流程的框架。它是Spring Framework的一部分,用于构建支持多步骤流程的Web应用。在Spring Web Flow中,流程是由一系列状态(state)、转换(transition)...

    Spring Web Flow CartApp4

    业务的逻辑涉及到数据的获取、传递、保存,相关的业务功能函数的调用等内容,这些功能的实现都可用 Java 代码来完成,但定义 Spring Web Flow 的语法与 Java 是无关的,这就要求 Spring Web Flow 提供与 Java 代码的...

    spring webflow 参考

    spring webflow 1.0 速查参考手册,

    spring web flow 官方文档

    《Spring Web Flow 2.30官方文档精要解析》 Spring Web Flow是Spring Framework的一个扩展模块,专门设计用于处理复杂的、多步骤的web应用程序流程。版本2.30是其一个重要的迭代,包含了多项更新与优化,为开发者...

    spring-webflow2.3.0源码

    《深入剖析Spring Webflow 2.3.0源码》 Spring Webflow 是Spring框架的一个扩展,它专注于处理Web应用程序中的流程管理。Spring Webflow 2.3.0是其一个重要版本,它提供了强大的状态管理和转移动作,使得开发者能够...

    spring web flow demo

    Spring Web Flow 2.0 入门 本教程分析了 Spring Web Flow 2.0 的技术要点,并且通过创建一个示例应用程序,展示了 Spring Web Flow 2.0 的基本知识。 开始之前 关于本教程 本教程通过一个简化的购物车应用,介绍了...

    Spring WebFlow Demo

    **Spring WebFlow 演示项目** Spring WebFlow 是一个用于构建强大、可维护的Web应用程序的框架,尤其适用于管理用户交互流程。它允许开发者定义和执行用户界面导航流程,这些流程可以跨越多个HTTP请求,提供了对...

    spring webflow入门基础

    ### Spring Webflow 入门基础 #### 购物车用例 首先,我们通过一个购物车用例来深入理解Spring Web Flow的应用场景及其优势。购物车作为一个典型的电子商务应用场景,涉及用户选择商品、查看购物车内容、确认订单...

    spring webflow升级-从1.0 到 2.0

    ### Spring WebFlow 从 1.0 升级到 2.0 的核心知识点 #### 一、流定义语言的变化 ##### 1.1 引言 Spring WebFlow (SWF) 是一款强大的流程管理框架,它使得创建复杂的Web应用程序变得更为简单。随着技术的发展,从 ...

    spring webflow 2.0所有最新开发包及文档和用例

    Spring Webflow 是一个用于构建高度交互式Web应用程序的框架,它扩展了Spring MVC的功能,专注于管理用户会话和流程状态。在2.0版本中,它提供了强大的功能,包括流程建模、流程控制、异常处理和回退策略等。下面...

    Spring Web Flow 2简化页面流的开发,结合Spring MVC更俊,Spirng Security 3添加安全机制

    **Spring Web Flow 2 简化页面流的开发** Spring Web Flow (SWF) 是一个用于构建富用户界面的框架,它专注于管理应用程序中的复杂导航逻辑,特别是那些涉及多个步骤和状态的交互流程。Spring Web Flow 2 是该框架的...

Global site tag (gtag.js) - Google Analytics