Spring web flow 配置文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:tx="http://www.springframework.org/schema/tx"

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-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/"/>

<property name="suffix" value=".jsp"/>

</bean>

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings">

<props>

<prop key="/index">index1</prop>

<prop key="/shopping">flowController</prop>

</props>

</property>

</bean>

<bean id="index1" class="org.springframework.web.servlet.mvc.ParameterizableViewController" >

<property name="viewName" value="index"></property>

</bean>

<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">

<property name="flowExecutor" ref="flowExecutor" />

</bean>

<!--FlowController可以理解为时flow的入口,也就是spring mvc与spring web flow的结合点,将请求交给词控制器处理就表示进入到flow中去,具体进入到哪一个flow就是靠flowExecutor来判断,判断的方式是根据请求的URL,那么在本例中将会进入到id为shopping的flow-->

</beans>

<?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-registry="flowRegistry" />

<!-- 所有 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>

<?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">

<!-- view-state中的view对应jsp文件夹中的jsp页面,on是触发事件,to对应state id -->

<!--      <var name="mycart" class="bean.Cart"/>  表示定义一个名为mycart的变量,其值为bean.Cart类对象

这种方式可以使用spring注解代替:@Component("mycart")

-->

<on-start> <!-- 表示在进入此flow之前执行 -->

<set name="conversationScope.cart" value="mycart"></set> <!-- 表示将mycart放入到conversation范围内的cart中 -->

</on-start>

<view-state id="viewCart" view="/jsp/viewCart" > <!-- 我们可以看到这是此flow的第一个state,那么当进入到这个flow时 -->

<on-render>  <!--在这个视图渲染之前,执行里面的业务逻辑-->          <!--首先执行这个state,即进入到viewCart页面 -->

<evaluate expression="productService.getProducts()" result="viewScope.products"/>

<!-- expression表达式表示业务逻辑,将该方法的返回值放入到view范围内的products中 -->

</on-render>

<transition on="submit" to="viewOrder"><!--当在此状态下,如果触发submit,则会转向viewOrder状态 -->

</transition>

<transition on="addToCart" to="addProductToCart"/>

</view-state>

<view-state id="viewOrder" view="/jsp/viewOrder">

<transition on="confirm" to="orderConfirmed">

</transition>

</view-state>

<view-state id="orderConfirmed" view="/jsp/viewConfirmed">

<transition on="returnToIndex" to="returnToIndex">

</transition>

</view-state>

<end-state id="returnToIndex" view="index">

</end-state><!-- 次flow的结束状态 ,不能再转向其他状态-->

<subflow-state id="addProductToCart" subflow="addToCart"> <!-- 子流,subflow表示子flow的id -->

<transition on="productAdded" to="viewCart" />

</subflow-state>

</flow>

<?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">

<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> <!-- 此state就是用来处理业务逻辑的 -->

<end-state id="productAdded"/>

</flow>

时间: 2024-11-10 07:09:40

Spring web flow 配置文件的相关文章

Spring Web Flow 入门demo(一)附源码

Spring Web Flow (SWF)是Spring Framework的一个脱离模块.这个模块是Spring Web应用开发模块栈的一部分,Spring Web包含Spring MVC. Spring Web Flow的目标是成为管理Web应用页面流程的最佳方案.当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器. 下面我们还是从一个简单的demo开始了解它: 这个例子是结合Springmvc来实现,项目结构:

Spring web flow——披萨订购流程示例(1)

一.Spring web Flow定义 Spring Web Flow(后面简称swf)是一个Web框架,它适用于元素按规定流程运行的程序.Spring Web Flow是Spring MVC的扩展,它支持开发基于流程的应用程序.它将流程的定义于实现流程行为的类和视图分离开来. 下面我们通过生成披萨订单的新Web应用程序.我们会使用Spring Web Flow来定义订单流程. 1.1 swf环境准备 尽管swf是Spring框架的子项目,但它并不是Spring框架的一部分.因此,在构建基于流程

Spring Web Flow 入门demo(三)嵌套流程与业务结合 附源码

上篇博客我们说Spring web Flow与业务结合的方式主要有三种,下面我们主要介绍一下第三种的应用方式 3,执行到<action-state> 元素 SpringWeb Flow 中的这个 <action-state> 是专为执行业务逻辑而设的 state .如果某个应用的业务逻辑代码既不适合放在transition 中由客户端来触发,也不适合放在 Spring Web Flow 自定义的切入点,那么就可以考虑添加<action-state> 元素专用于该业务逻辑

spring web flow 2.0入门(转:http://luanxiyuan.iteye.com/blog/2282126)

Spring Web Flow 2.0 入门详解 博客分类: spring 目录: 参考文献 购物车用例 什么情况下可以使用 Spring Web Flow? 配置 Spring Web MVC 配置 Spring Web Flow 2.0 的基础 在购物车示例应用中配置 Spring Web Flow 用 Unified EL 实现业务逻辑 用 subflow 实现添加商品到购物车功能 global transition 简介 1.参考文献 参考1:http://www.ibm.com/dev

Spring Web Flow 入门demo(三)嵌套流程与业务结合 附源代码

上篇博客我们说Spring web Flow与业务结合的方式主要有三种,以下我们主要介绍一下第三种的应用方式 3,运行到<action-state> 元素 SpringWeb Flow 中的这个 <action-state> 是专为运行业务逻辑而设的 state . 假设某个应用的业务逻辑代码既不适合放在transition 中由client来触发,也不适合放在 Spring Web Flow 自己定义的切入点,那么就能够考虑加入<action-state> 元素专用于

《Spring实战》学习笔记-第八章:使用Spring Web Flow

第四版的第八章内容与第三版基本一致. 本章内容: 创建会话式web应用程序 定义流程状态和行为 保护web流程 互联网的一个奇特之处就在于它很容易让人迷失.有如此多的内容可以查看和阅读,而超链接是其强大魔力的核心所在. 有时候,web应用程序需要控制web冲浪者的导向,引导他们一步步地访问应用.比如电子商务网站的付款流程,从购物车开始,应用程序会引导你依次经过配送详情.账单信息以及最终的订单确认. Spring Web Flow是一个web框架,它适用于元素规定流程运行的程序.本章中,我们将会探

用Spring Web Flow和Terracotta搭建Web应用

什么是Spring Web Flow? Spring Web Flow是Spring Framework中的web应用组件,它提供了一种编写有状态和基于会话的web应用的简便手段.Spring Web Flow 使得逻辑流程成为web应用中的一等公民,它能让你定义为自包含模块,以独立于应用的其它部分来配置和重用.它不依赖于框架从而能够方便的与可选的web应用框架一同使用,比如Spring MVC.Struts或者JSF等. 页面流转使用一种领域定义语言(DSL)来配置,这个语言专门开发用来定义和

Spring Web Flow 笔记

在Spring 中配置 Web Flow <?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.sprin

Spring Web Flow 学习笔记(2)-流程的组件

1.在Spring Web Flow中,流程由三个主要元素定义的:状态.转移和流程数据. 状态是流程中事件发生的地点,类似公路旅行中停下来的地点,转移就类似与连接这些地点的公路 2.状态 Spring Web Flow 定义了5种不同类型的状态: 状态类型 作用 行为(Action) 是流程逻辑发生的地方 决策(Decision) 将流程分成两个方向,它会基于流程数据的评估结果确定流程的方向 结束(End) 是流程的最后一站,一旦进入End状态,流程就会结束 子流程(Subflow) 会在当前的