WebWork2教程(中文版)(5)(完)
来源:互联网 发布:常德市优化办工作人员 编辑:程序博客网 时间:2024/06/05 00:39
5、Interceptors
Interceptors允许在调用堆栈中包含任意在Action处理之前和/或处理之后执行的代码。这是你的代码简单,更能重用。Xwork和WebWork的大部分特性都是Interceptors实现的。你可以通过外部配置,按照你定义的顺序,对指定的Action应用你自己的Interceptors。
当你访问.action URL时,WebWork的ServletDispatcher启动Action对象,在Action被执行之前,启动允许被其它的对象中断,这就称Interceptor。在指定的Action之前(或之后)执行Interceptor,只要在xwork.xml中配置属性。下面是4.1.1节中展示UI标记用法的例子的Interceptor配置:
<action name="formProcessing" class="lesson04_01_01.FormProcessingAction">
<result name="input" type="dispatcher">ex01-index.jsp</result>
<result name="success" type="dispatcher">ex01-success.jsp</result>
<interceptor-ref name="validationWorkflowStack" />
</action>
FormProcessingAction使用了validationWorkflowStack。这是一个Interceptor堆,组织一组按顺序执行的Interceptors。ValidationWorkflowStack在WebWork-default.xml中配置,所以我们只要使用<interceptor-ref />在Action配置中,或使用<default-interceptor-ref />在package配置中使用它。下面是HelloWebWorld例子的Interceptor配置:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<!-- Include WebWork defaults (from WebWork-2.1 JAR). -->
<include file="WebWork-default.xml" />
<!-- Configuration for the default package. -->
<package name="default" extends="WebWork-default">
<!-- Default interceptor stack. -->
<default-interceptor-ref name="defaultStack" />
<!-- Action: Lesson 03: HelloWebWorldAction. -->
<action name="helloWebWorld" class="lesson03.HelloWebWorldAction">
<result name="success" type="dispatcher">ex01-success.jsp</result>
</action>
</package>
</xwork>
看一下Interceptor如何工作的
l 创建Interceptor类,需要扩展com.opensymphony.xwork.interceptor.Interceptor接口(包含在xwork-1.0.jar);
l 在xwork.xml文件中,使用<interceptors />内嵌的<interceptor />声明Interceptor类;
l 使用<interceptor-stack />创建Interceptor堆(可选);
l 使用<interceptor-ref /> 或<default-interceptor-ref />哪些Interceptor由哪个Action使用;前者由指定Action使用,后者为所有Action使用
(1)WebWork-default.xml
让我们看一下WebWork-default.xml的内容:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<package name="WebWork-default">
<result-types>
<result-type name="dispatcher" default="true"
class="com.opensymphony.WebWork.dispatcher.ServletDispatcherResult"/>
<result-type name="redirect"
class="com.opensymphony.WebWork.dispatcher.ServletRedirectResult"/>
<result-type name="velocity"
class="com.opensymphony.WebWork.dispatcher.VelocityResult"/>
<result-type name="chain"
class="com.opensymphony.xwork.ActionChainResult"/>
<result-type name="xslt"
class="com.opensymphony.WebWork.views.xslt.XSLTResult"/>
</result-types>
<interceptors>
<interceptor name="timer"
class="com.opensymphony.xwork.interceptor.TimerInterceptor"/>
<interceptor name="logger"
class="com.opensymphony.xwork.interceptor.LoggingInterceptor"/>
<interceptor name="chain"
class="com.opensymphony.xwork.interceptor.ChainingInterceptor"/>
<interceptor name="static-params"
class="com.opensymphony.xwork.interceptor.StaticParametersInterceptor"/>
<interceptor name="params"
class="com.opensymphony.xwork.interceptor.ParametersInterceptor"/>
<interceptor name="model-driven"
class="com.opensymphony.xwork.interceptor.ModelDrivenInterceptor"/>
<interceptor name="component"
class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>
<interceptor name="token"
class="com.opensymphony.WebWork.interceptor.TokenInterceptor"/>
<interceptor name="token-session"
class="com.opensymphony.WebWork.interceptor.TokenSessionStoreInterceptor"/>
<interceptor name="validation"
class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
<interceptor name="workflow"
class="com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor"/>
<interceptor name="servlet-config"
class="com.opensymphony.WebWork.interceptor.ServletConfigInterceptor"/>
<interceptor name="prepare"
class="com.opensymphony.xwork.interceptor.PrepareInterceptor"/>
<interceptor name="conversionError"
class="com.opensymphony.WebWork.interceptor.WebWorkConversionErrorInterceptor"/>
<interceptor-stack name="defaultStack">
<interceptor-ref name="static-params"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
</interceptor-stack>
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="validation"/>
&n<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- WebWork2教程(中文版)(5)(完)
- WebWork2教程(中文版)(5)(完)
- WebWork2教程(中文版)(3)
- WebWork2教程(中文版)(4.1)
- WebWork2教程(中文版)(4.2)
- WebWork2教程(中文版)(4.1)
- WebWork2教程(中文版)(4.2)
- WebWork2教程(中文版)3
- WebWork2教程(中文版)(4.1)
- WebWork2教程(中文版)(1)
- WebWork2教程(中文版)(2)
- WebWork2教程(中文版)(1)
- WebWork2教程(中文版)(2)
- WebWork2教程(中文版)(4.1.1)
- WebWork2教程(中文版)(4.1.1)
- WebWork2教程(中文版)(4.1.1)
- WebWork2教程(中文版)补充-例子源代码下载
- WebWork2教程(中文版)(Interceptors)(http://www.chinaitpower.com/A/2002-04-14/19786.html)
- Velocity用户指南(中文版)(2)
- 企业开发的发展趋势
- WebWork2教程(中文版)(2)
- WebWork2教程(中文版)(4.1.1)
- 四色着色的证明
- WebWork2教程(中文版)(5)(完)
- JAVA中通用JPEG缩影图Bean的制作与示例
- 我看《风柜来的人》
- IoC模式和factory method模式的一些区别
- TIJ3, tons of toys (2)
- CryptTool 封装了一些加密工具方法-实用
- 在WebWork中实现IoC(3)
- 《深入浅出Hibernate》读书笔记3——联合查询
- ActionForm的生命周期浅探