??xml version="1.0" encoding="utf-8" standalone="yes"?>91精品国产综合久久久蜜臀图片,国产精品久久久久久久久久99 ,精品国产一区二区三区四区阿崩 http://www.aygfsteel.com/qq13367612/articles/18101.htmlSungSungFri, 04 Nov 2005 03:05:00 GMThttp://www.aygfsteel.com/qq13367612/articles/18101.htmlhttp://www.aygfsteel.com/qq13367612/comments/18101.htmlhttp://www.aygfsteel.com/qq13367612/articles/18101.html#Feedback0http://www.aygfsteel.com/qq13367612/comments/commentRss/18101.htmlhttp://www.aygfsteel.com/qq13367612/services/trackbacks/18101.html
Spring框架正准备推ZU新的技术。在下一个版本中Spring正式将Spring WebFlow整合q来。Spring WebFlow是一个及其优U的Web开发框Ӟ用于在Web应用内部创徏和配|可重用的Web程?BR>
熟?zhn)Spring的h可能先入ZC为Spring WeFlow和SpringMVC没有什么区别。那错了。Spring MVC是一个轻量的Web开发框Ӟ而Spring WebFlow 则提ZU全新的视角。她使得Web架构师们可以精力集中在Web应用开发的抽象层次?Web程的逻辑l构和W(xu)eb事g条g的定义。此外,她还提出许多新的概念?BR>
本文回这一个新框架前的一些关键概念,用一个经典的用户d例子来分析流E标记语a的主要组成元素ƈ向?zhn)解释Z么WebFlow如此׃h?BR>
Spring WebFlow 概念和组件作Z个Web框架QW(xu)ebFlow无论在理Zq是在实际开发上都有诸多优点。深厚的软g工程学架构保证了他的E_性,同时Q其lg合理Q易于理解,易于使用?BR>
事实上,它更适合中大型应用的开发,因ؓ(f)它的lg模型专门针对架构重用Q高效管理性和可配|性进行了优化?BR>
用例研究

本文以一个常见的web应用程作ؓ(f)CZQ一个n份认证流E,讲解它的一些代码片断。一个Web认证的全q程包括:d表单Q注册表单,认证actionQ注册actionQ以及对q些action的结构修饰。这个例子用来展C那些修饰登录表单的lg的配|?BR>
自动操作架构

Spring WebFlow以有限自动机(Finite State machine)的概念ؓ(f)基础。Web应用内部的用户交互行为和事务被徏模ؓ(f)一般的状态机Q这是一U非常流行的软g工程建模Ҏ(gu)?见图1)。自动机为基的设计是一U很好的设计Ҏ(gu)Q同时正在越来越收到应用架构的青睐——因为它在对Web交互行ؓ(f)建模时显得相Ҏ(gu)C严}?BR>


WebFlow的核心组?BR>
一个Spring WebFlow应用中包含一个或多个程Q通常每个程包括执行Action的动作状?ActionStates)Q显C状?ViewStates)Q蟩转动?Transitions)?BR>


一个流E是一个预先定义好的用户交互行为的集合Q表CZؓ(f)一个由动作状态和昄状态构成的?wi),状态之间通过跌{联系?BR>
下面的登录注册是一个webflow的例子,包含了一些典型的构gQ例如loginFormQActionState,transition。这些构仉过一个XML文g描述:






    
        
        
    
...
    
        
    
...


q个程以loginForm开始,?successView"l束(修饰主页?displayMain" 的组件。流E可以通过XML文档配置Q或者AbstractFlowBuilder的子cR?

动作状?ActionStates)

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


        
        
    


动作(Actions)

Action是ActionState可以q接Q重用,声明调用的最单位。Actionl承自AbstractActionc,该类实现了doExecuteActionҎ(gu)。这个方法的参数:RequestContextQW(xu)ebFlow(其中装了所有流E相关的数据)?

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

ActionҎ(gu)被自动调用,同时可以处理一些登录准备,预先装入{操作?

public LoginFormAction extends AbstractAction
{ 

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

 }//end method 

}//end class


昄状?ViewState)

ViewState初始化对昄lg(jspQtile{?的修饰操作。下面是一个ViewState的配|代码:(x)


        
    


当来自loginForm的ActionStateq回一?success"Ӟq个ViewState会(x)被调用。它?yu)修?enterCredentials"昄lg(可以是一个常见的struts forward)?

跌{(Transition)

和通常的状态机一PW(xu)ebFlow定义了状态以及状态之间蟩转动作。这些蟩转动作很cMstruts中的ActionForward。同h负责q接两个状态?

后动作(Continuation)

后动作(Continuation)允许你回退q新开始程序执行流E——从E序执行的角度来看是一个适时的逆流E。Continuation的概忉|早来自编E语aQ但是却从来没有被用于像JavaQVBQC++q样L的编E语a中。WebFlow创造性地实现了continuation。由于continuation可以用来持久和重造Q何一个流E状态,从而提供给你极大的自由?

重用

WebFlow中的程定义Q如d程Q有针对性地被结构化以便重用。他们定义封装了自己的生命周期。这些定义可以很Ҏ(gu)的用支持Spring的其他Weblg配置重用。架构师应该识别出ƈ定义通用的流E,如登录,搜烦{以便今后的重用?BR>
此外QAction如果正确的设计与Spring的结合,也可以被重用。他们可以同时被不同程的action state使用。这些重用,既有应用U的又有程U的Q增Zl护性和代码可读性?BR>
与Strutsl合

WebFlow与struts的结合部分地通过标准的Springcdorg.springframework.web.struts包中的一些配|。要与WebFlow相关概念(ActionQActionFlow)l合只需要注册W(xu)ebFlow规格的struts actionQƈ像普通的WebFlow action一样用?BR>
下面的配|代码来自struts-config.xmlQ描qCStruts的Action如何配置成流E的入口。注意WebFlow规格的Actionc?org.springframework.web.flow.struts.FlowAction)和属?flowId"Q它们将Action与登陆流E连接v来。例子中的登录流E在Spring的应用上下文(ApplicationContext)中作Z个loginFlow的bean理。你q需要将q个程注册Z个由Spring理的bean?BR>
<!- flow actions ->
            <action path="/loginFlow"
 type="org.springframework.web
 .flow.struts.FlowAction"
  name="actionForm" scope="request" 
className="org.springframework.web.
flow.struts.FlowActionMapping">
<set-property property="flowId"
value="loginAction" />
            </action>


在这个例子中q用CSpring中的RequestProcessor(org.springframework.web.struts.BindingRequestProcessor)Q是Spring的自动绑定form和bean。这一Ҏ(gu)避免再d单独的ActionForm对象?

<controller processorClass="org.springframework.web.
struts.BindingRequestProcessor"/>


同时Q它q要求一个用工L(fng)来自动绑定Web表单中的值到一个对象?

<plug-in className="org.springframework.
web.struts.BindingPlugin"/>


WebFlow的预发布现在可以下蝲Q其中包含一个样例应?"birthdate")Q详l描qCq个整合q程?

如果你正在着手徏立一个Web应用QSpring是一个非怸错的选择。Spring MVC非常Ҏ(gu)上手q且可以很方便的同其他组件整合。另一斚wQ即出现的Spring WebFlow提供给你各U复杂的新特性。你能够开发出高度重用和结构化的Web应用。如果你在开发的是一个大规模的企业应用,q一Ҏ(gu)很重要的。这也是Z么struts如此行?

ȝ来说QJ2EE Web框架目前处在一U群雄逐鹿的状态,没有一个领D。Struts是最行的,但是它的L构师也是主要的开发者已l抛弃了它。被UCؓ(f)Struts取代者的JSF目前q没有获得够的影响力。而同Ӟ其他的框架正在慢慢开始流行?

你也怼(x)问,"我应该选择哪个?"Spring WebFlow出现可以让你以后再去考虑q个问题。WebFlow允许你在不需要较大改动的情况下方便的切换框架?

像前面说q的QSpring WebFlow是一个抽象的框架Q可以让你只专注于业务流E和重用。无论是StrutsQJSFq是Spring MVC都可以作为它的业务流E实现。因此,你也׃需要马上作Z面说的那个选择了?


Sung 2005-11-04 11:05 发表评论
]]>
վ֩ģ壺 Դ| ½| | ˮ| | ƾ| | | ¹| | ƽ| Ľ| ű| | ڶ| | Դ| ɽ| | Ϫ| | | | | | | | | | ָɽ| ½| | ϼ| | Ȫ| | ֦| | | | |