Spring web flow是从Spring Framework中分离出来一个开发模块,是spring 模块栈中的一部分,Spring Web Flow 的目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器。

流程组件

spring web flow有三个组件,分别为状态,转移,和流程数据。我们可以把swf看成在高速公路上的汽车,状态相当于汽车,汽车具有很多功能;转移是我们开车的高速公路;而流程数据是车上的货物,我们到了一些特定的地方就要执行装车或者卸车的动作。

状态

状态时swf进行数据处理,Spring web flow 定义了五种不同的状态,分别为行为,决策,视图,结束,子流程。
行为
行为一般情况下是我们具体的操作,主要是执行我们加载进来的bean的一些方法,并根据bean的执行结果跳转到对应的下一个状态。
书写方式

<action-state id=""><evaluate expression="bean.method"/><transition to=""/></action-state>

视图状态
视图状态顾名思义就是向用户展示和用户交互的界面,通过该界面可以让用户进行输入。
书写方法

<view-state id="name"/>

name的含义具有两个含义,1.在流程状态中表示该状态(也就是唯一标识)2.因为没有指定逻辑视图所以他也表示状态展现的逻辑视图的名字是name
显示调用视图的方法如下

<view-state id="name" view="path">

如果视图中存在绑定的表单,需要绑定到视图中使用modle如下

<view-state id="name" model="flowScope.paymentDetails"

这样就完成了绑定。其中paymentDetails表示作用域中的对象
决策状态
决策状态相当于我们在编写代码中的if,他主要是将结果进行判断从而进入到不同的选项中。决策状态评估的是一个布尔型的表达。如下

<decision-state id="name"><if test="布尔表达式"then="状态"else="状态"/>
</decision-state>

子流程状态
子流程类似于我们在方法中调用其他方法,当其他方法执行结束时,会返回来继续执行。

<subflow-state id="name" subflow="pizza/order"><input name="order" value="ordre"/><transition on="状态" to="状态"></subflow-state>

结束状态
当该流程结束(可能时子流程)则最后进入到流程结束的状态。
流程结束会后会发生三种情况
1.子流程结束,则返回子流程 的调用处,继续原状态执行
2.如果结束中带有view属性,则指定的视图会被渲染。如果添加了"externalRedirecrt"前缀,将会重定向到流程外部的界面。如果添加了"flowRedirect"前缀,将会重定向另一个流程。
3.如果不是子流程,也没有指定的view,会进入到指定的url,并结束流程

<end-state id="name" />

转移

转移是一个内套的标签,每一个状态中都只要要有一个转移来确定下一步具体干什么。

<transition on="前台传过来的标志" to="state" >

其中on可以省略,on是用来确定是否执行该过程,如果传过来是该标志则执行,这里可以存在多个transition
如果我们在开发存在中取消,如果每个取消位置都要写一个transition会显得十分麻烦,因此,存在了一个全局的转移,当该事件发生时,无论在哪里都会进行跳转如下

<global-transitions><transition on="" to=""><global-transition>

流程数据

1.声明变量

方法一:<var name="" class=""/>
方法二:<evaluate result="作用域.变量" expression="方法">
方法三:<set name="作用域.变量" value="类">

2.作用域
Conversation 全局,可以被其他的流程访问
Flow 当前流程可以访问
Request 请求作用域,当请求结束时失效
flash 在流程创建到流程结束有效,当视图渲染时也失效。
view 当进入视图状态时生效,当视图状态推出则无效。

结束
使用上面的状态,数据流,转移相互配合,则会搭配出不同的流程,在和jsp相对应就会产生数据流图。

Spring Web Flow相关推荐

  1. 用Spring Web Flow和Terracotta搭建Web应用

    什么是Spring Web Flow? Spring Web Flow是Spring Framework中的web应用组件,它提供了一种编写有状态和基于会话的web应用的简便手段.Spring Web ...

  2. MESSL(maven + extjs + spring portlet mvc + spring web flow + liferay )整合架构 5

    流控制文件很简单,就是根元素是<view>,然后用<view-state>来代表一个一个的页面,用<transition>来代表从一个状态到另外一个状态的跳转,如果 ...

  3. 强烈推荐Spring Web Flow权威指南

    关于Spring Web Flow权威指南 评论 读后感:这是Spring Web Flow创始人写的书.内容是基于1.0的.此书原版出版时其实2.0已经推出了,为什么老大并没有追新呢?我猜想,书中写 ...

  4. Spring Web Flow实例教程

    目录: 参考文献 购物车用例 什么情况下可以使用 Spring Web Flow? 配置 Spring Web MVC 配置 Spring Web Flow 2.0 的基础 在购物车示例应用中配置 S ...

  5. Spring Web Flow 2.0 入门详解

    目录: 参考文献 购物车用例 什么情况下可以使用 Spring Web Flow? 配置 Spring Web MVC 配置 Spring Web Flow 2.0 的基础 在购物车示例应用中配置 S ...

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

    转载地址 ; http://blog.csdn.net/hejingyuan6/article/details/46723021 上篇博客我们说spring web Flow与业务结合的方式主要有三种 ...

  7. Spring Web Flow 入门demo(二)与业务结合 附源码

    转载地址 http://blog.csdn.net/hejingyuan6/article/details/46516287 第一部分demo仅仅介绍了简单的页面跳转,接下来我们要实现与业务逻辑相关的 ...

  8. Spring Web Flow 入门demo(一)简单页面跳转 附源码

    转载地址 http://blog.csdn.net/hejingyuan6/article/details/46508821 spring Web Flow (SWF)是Spring Framewor ...

  9. 笔记36 Spring Web Flow——配置

    Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序.Spring Web Flow是Spring MVC的扩展,它支持开发基于流程的应用程 序.它将流程的定义与实现流程行 ...

  10. 笔记41 Spring Web Flow——Demo

    订购披萨的应用整体比较比较复杂,现拿出其中一个简化版的流程:即用户访问首页,然后输入电话号(假定未注册)后跳转到注册页面,注册完成后跳转到配送区域检查页面,最后再跳转回首页.通过这个简单的Demo用来 ...

最新文章

  1. 交叉熵损失函数在多分类深度学习中的应用 转
  2. 第二讲 html5 框架+Crosswalk 打包 app 以及 Angularjs 基础
  3. linux下安装和卸载vmware产品
  4. 科大星云诗社动态20210807
  5. 【CV】关注度越来越高的行人重识别,有哪些热点?
  6. 竟然如此简单!C++实现完全随机加密、解析库,并附上完整代码分析
  7. CNN和FCN的区别
  8. Spring学习总结(11)——Spring JMS MessageConverter介绍
  9. PHP如何释放内存之unset销毁变量并释放内存详解
  10. MODIS三种常见数据辐射定标处理
  11. 触控屏c语言程序,触摸屏编程软件 C-more Micro Programming Software V3.0
  12. 泰语翻译软件隐私政策
  13. matlab sil,丰田使用高精度发动机模型和SIL+M前置开发发动机控制系统
  14. 股票回测Web应用开发
  15. WTL 自绘控件库 (CQsRadioBox)
  16. codeforces CF487E Tourists 边双连通分量 树链剖分
  17. DAZ Studio 4—3D动画制作工具
  18. 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 三) (转)
  19. 面试题promise原理
  20. springAOP支持的通知类型

热门文章

  1. 品牌推广技巧有哪些?星媒志分析企业怎么样做线上品牌推广
  2. 什么是数字体验平台(DXP)?
  3. 【node错误】npm ERRInvalid name:解决
  4. python爬虫的学习心得分享
  5. Java IO流之PrintWriter分析
  6. ajax的4种状态事件,AJAX - onreadystatechange 事件
  7. java毕业设计_基于J2EE的小学生老师家长互动平台设计与实现
  8. 常用Linux发行版操作系统大盘点
  9. Web安全测试(文末送电子书)
  10. 懂得很多道理,但还是穷极一生