Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>Spring>>Spring WebFlow:重用与抽象框架解析之一
Spring WebFlow:重用与抽象框架解析之一
2005-08-17   来源:Java研究组织  作者:zhangv
Spring WebFlow是一个全新的Web框架,她带给我们一种全新且高度结构化的Web应用构建方法。让我们来看看她的一些特性。

Spring框架正准备推出一种新的技术。在下一个版本中Spring将正式将Spring WebFlow整合进来。Spring WebFlow是一个及其优秀的Web开发框架,用于在Web应用内部创建和配置可重用的Web流程。

熟悉Spring的人可能先入为主地以为Spring WeFlow和SpringMVC没有什么区别。那就错了。Spring MVC是一个轻量级的Web开发框架,而Spring WebFlow 则提出一种全新的视角。她使得Web架构师们可以将精力集中在Web应用开发的抽象层次上:Web流程的逻辑结构和Web事件条件的定义。此外,她还提出许多新的概念。

本文将回顾这一个新框架前的一些关键概念,用一个经典的用户登录例子来分析流程标记语言的主要组成元素并向您解释为什么WebFlow如此诱人。

Spring WebFlow 概念和组件作为一个Web框架,WebFlow无论在理论上还是在实际开发上都有诸多优点。深厚的软件工程学架构保证了他的稳定性,同时,其组件合理,易于理解,易于使用。

事实上,它更适合中大型应用的开发,因为它的组件模型专门针对架构重用,高效管理性和可配置性进行了优化。

用例研究

本文以一个常见的web应用流程作为示例,一个身份认证流程,讲解它的一些代码片断。一个Web认证的全过程包括:登录表单,注册表单,认证action,注册action,以及对这些action的结构修饰。这个例子用来展示那些修饰登录表单的组件的配置。

自动操作架构

Spring WebFlow以有限自动机(Finite State machine)的概念为基础。Web应用内部的用户交互行为和事务被建模为一般的状态机,这是一种非常流行的软件工程建模方法。(见图1)。自动机为基础的设计是一种很好的设计方法,同时正在越来越收到应用架构的青睐——因为它在对Web交互行为建模时显得相对清晰且严谨。



WebFlow的核心组件

一个Spring WebFlow应用中包含一个或多个流程,通常每个流程包括执行Action的动作状态(ActionStates),显示状态(ViewStates),跳转动作(Transitions)。

流程

一个流程是一个预先定义好的用户交互行为的集合,表示为一个由动作状态和显示状态构成的树,状态之间通过跳转联系。

下面的登录注册是一个webflow的例子,包含了一些典型的构件,例如loginForm,ActionState,transition。这些构件通过一个XML文件描述:

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

<!DOCTYPE webflow PUBLIC "-
//SPRING//DTD WEBFLOW//EN"
    "http://www.springframework.
	org/dtd/spring-webflow.dtd">
<webflow id="LoginSequence" 
start-state="loginForm">

    <action-state id="loginForm">
        <action bean="loginFormAction"/>
        <transition on="success"
		to="formView"/>
    </action-state>
...
    <view-state id="formView" 
	view="enterCredentials">
        <transition on="submit" 
		to="bindAndValidateForm"/>
    </view-state>
...
<end-state id="successView" 
view="displayMain"/>


这个流程以loginForm开始,以"successView"结束(修饰主页面"displayMain" 的组件。流程可以通过XML文档配置,或者AbstractFlowBuilder的子类。

动作状态(ActionStates)

ActionStates对用户事件或其他事件进行响应。ActionStates自身又可以包含其他可执行的Action和transition。下面的代码配置了"loginForm"这个ActionState。

<action-state id="loginForm">
        <action bean="loginFormAction"/>
        <transition on="success" to="formView"/>
    </action-state>


动作(Actions)

Action是ActionState可以连接,重用,声明调用的最小单位。Action继承自AbstractAction类,该类实现了doExecuteAction方法。这个方法的参数:RequestContext,WebFlow(其中封装了所有流程相关的数据)。

loginForm动作状态通过Spring的自动装配特性调用LoginFormAction动作。doExecute

Action方法被自动调用,同时可以处理一些登录准备,预先装入等操作。

public LoginFormAction extends AbstractAction
{ 

 protected Event doExecuteAction
 (RequestContext context)  
 throws Exception
 { 
  //perform some login specific setup operations 
  ... 

 }//end method 

}//end class


显示状态(ViewState)

ViewState初始化对显示组件(jsp,tile等)的修饰操作。下面是一个ViewState的配置代码:

<view-state id="formView" 
view="enterCredentials">
        <transition on="submit"
		to="bindAndValidateForm"/>
    </view-state>


当来自loginForm的ActionState返回一个"success"时,这个ViewState将会被调用。它将修饰"enterCredentials"显示组件(可以是一个常见的struts forward)。

跳转(Transition)

和通常的状态机一样,WebFlow定义了状态以及状态之间跳转动作。这些跳转动作很类似struts中的ActionForward。同样是负责连接两个状态。

后继动作(Continuation)

后继动作(Continuation)允许你回退并重新开始程序执行流程——从程序执行的角度来看是一个适时的逆流程。Continuation的概念最早来自编程语言,但是却从来没有被用于像Java,VB,C++这样主流的编程语言中。WebFlow创造性地实现了continuation。由于continuation可以用来持久和重造任何一个流程状态,从而提供给你极大的自由。
  --相关文章--
· 用代码学习Spring:IoC、AOP (2007-04-17)
· 用Spring更好地处理Struts动作三种整合 (2007-04-17)
· 玩玩Spring之IOC (2007-04-17)
· 新手入门之Spring BeanDoc使用 (2007-04-17)
· 彻底理解spring的定制任务(scheduling) (2007-04-17)
· 对非String类型进行校验时的出错处理 (2007-04-17)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接