`
zengbo0710
  • 浏览: 415370 次
社区版块
存档分类
最新评论

xwork配置详述

阅读更多

XWork配置详述

XWork配置文件是以“xwork”命名的.xml文件,它必需放到类路径(classPath)的根目录, Web应用一般放在classes目录中,它需要遵守DTD的规范(现在是xwork-1.0.dtd)。这个文件定义了我们的ActionInterceptorResult的配置和相互之间的映射。下面我们看看用户注册的完整XWork配置文件:

<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">

 

<xwork>

 

    <include file="webwork-default.xml"/>

   

    <package name="example" extends="webwork-default">

       <action name="register" class="example.register.RegisterAction" >

           <result name="success" type="dispatcher">

              <param name="location">/register-result.jsp</param>

           </result>

           <interceptor-ref name="params"/>

       </action>

      

       <action name="registersupport" class="example.register.RegisterActionSupport" >

           <result name="success" type="dispatcher">

              <param name="location">/register-result.jsp</param>

           </result>

           <result name="input" type="dispatcher">

              <param name="location">/registerSupport.jsp</param>

           </result>

           <interceptor-ref name="validationWorkflowStack"/>

       </action>

      

    </package>

 

</xwork>

xwork.xml文件的标签元素

Xworkxwork配置文件的所有内容,都是定义在<xwork>标签中,它的直接子标签有<package><include>

Package我们的ActionInterceptorResult都是在此标签中定义。<package>标签有一个必需的属性“name”,它用来标识唯一的一个package。属性“extends”是可选的,它用来继承前面定义的一个或一个以上package配置信息,包括所有的interceptorinterceptor-stackaction的配置信息。注意,配置文件按文档的顺序,由上向下执行,因此,用“extends”引用的package必需在引用之前定义。属性“sbstract”是可选的,它用来设置package为抽象的package,它可以被继承同时它的Action配置信息在运行时将不可见。

属性namespace也是可选的,它用来分隔不同package定义的action,让这些action处于不同的命名空间(namespaces)。这样,我们不同的package可以有相同的action命名,因为可以通过命名空间来区分。如果不指定namespace,默认的是空字符串。命名空间也可以被用在安全控制方面,它可以根据不同的命名空间指定不同的访问权限。

是否必需

  

name

用来标识package的名称

extends

继承它所扩展的package配置信息

namespace

指定package的命名空间,默认是””

abstract

声明package是抽象的

 

Result-type用来定义输出结果类型的Class,它用简单的名-值对来定义。当然,我们自己写的输出结果类型也必需在这里定义。例如:

<result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>default="true"表示如果在Actionresult中不指定result-type,就使用这个默认的result-type

 

Interceptors它是一个简单的<interceptors>  <interceptors/>标签,我们的interceptorinterceptor-stack都在此标签内定义。

 

Interceptor当然,就是用来定义我们的拦截器。它的定义非常简单,名-值对的形式。例如:<interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/>。在action中,可以通过<interceptor-ref />来直接引用前面定义了的拦截器。

 

Interceptor-stack用来将上面定义的interceptor组织成堆栈的形式,这样我们就可以创建一组标准的interceptor,让它按照顺序执行。在我们的Action中直接引用这个interceptor堆栈就可以了,不用逐个interceptor去引用。

例如:

<interceptor-stack name="validationWorkflowStack">

               <interceptor-ref name="defaultStack"/>

                <interceptor-ref name="validation"/>

                <interceptor-ref name="workflow"/>

            </interceptor-stack>

Interceptor Param:我们的interceptor是在ActionConfig级别被实例化和存储的,也就是说一个Action引用的每个interceptor都会有相应的实例。这样,我们在定义和引用interceptor的时候都可以为它设置相应的参数值。例如:

<interceptor name="test" class="com.opensymphony.xwork.TestInterceptor">

    <param name="foo">expectedFoo</param>

</interceptor>

ActionInterceptor-stack中引用时也可以设置参数,例如:

<interceptor-ref name="test">

    <param name="expectedFoo">expectedFoo</param>

</interceptor-ref>

注意:在Action引用的时候,如果引用的是Interceptor-stack,则不允许设置参数,否则会报错。

 

Global-results它允许我们定义全局的输出结果(global result),比如登陆页面、操作错误处理页面。只要继承它所在的package,这些输出结果都是可见的。

例如:

<global-results>

           <result name="login" type="dispatcher">

              <param name="location">/login.jsp</param>

           </result>

           <result name="error" type="dispatcher">

              <param name="location">/error.jsp</param>

           </result>

       </global-results>

如果我们的Action执行完返回“login”,它将调用上面的这个输出结果,将输出派遣到根目录下的login.jsp页面。

 

Action用来配置Action的名称(name)和它对应的Class。我们将通过这个Action的名称和它所在packagenamespace去配置文件中取得这个Action的配置信息。它可以通过<param>来设置参数,Action在执行的时候会取得配置文件里设置的参数(通过拦截器StaticParametersInterceptor)。

Action可以配置一个或多个输出结果(result)。一个输出结果的名称,对应于Action执行完成返回的字符串。<result>标签的type属性,对应我们前面定义过的result-type,说明reslut的类型。例如:

<action name="register" class="example.register.RegisterAction" >

           <result name="success" type="dispatcher">

              <param name="location">/register-result.jsp</param>

           </result>

           <interceptor-ref name="params"/>

       </action>

当然,我们的Action用到的拦截器也是在这里配置的,通过<interceptor-ref>标签,属性“name”的值,对应前面定义的interceptorinterceptor-stack如果Action中没有用<interceptor-ref>标签指定拦截器,它将使用默认的<default-interceptor-ref>标签定义的拦截器。

 

Includexwork..xml文件可以被分成好几个不同的文件,xwork..xml通过<include>标签引用被包含的文件,例如:<include file="webwork-default.xml"/>。被包含的文件必需是package标签里的内容,我们看看<include>标签在配置文件里的位置就知道了。如果要继承被包含文件的package,我们必需将<include>标签放在其上面,因为配置文件是按照由上而下的顺序解析的。

 

分享到:
评论

相关推荐

    webwork详细讲解.doc

    #### XWork配置详述 XWork是WebWork的基础,其配置文件`xwork.xml`定义了Action及其配置。深入理解`xwork.xml`的结构和标签对于高效使用WebWork至关重要。 #### 实战G-Roller-WW 虽然原文件中没有详细介绍G-...

    webwork学习

    - **XWork配置详述**:xwork.xml文件中包含了对Action、Interceptor、Result等元素的配置信息。 #### 四、扩展整合 **1. 实战G-Roller-WW** - **G-Roller-WW介绍**:这是一个使用WebWork进行博客管理系统的示例...

    webwork教程很好的学习教程

    #### 十一、XWork配置详述 **xwork.xml**是WebWork的核心配置文件,包含了Action、拦截器等的定义。 - **xwork.xml文件的标签元素**:例如`&lt;package&gt;`、`&lt;action&gt;`等标签用于定义框架的行为。 #### 十二、实战G-...

    Xwork2 源码阅读.pdf(附源码)

    以下将对Xwork2及其与Webwork、Struts2的关系进行详述,并探讨其源码中的重要知识点。 首先,我们要知道Xwork2是Struts2的基石,它提供了一个强大的命令模式实现,使得Action类能够处理HTTP请求并返回相应的结果。...

    struts2.5.16升级过程中遇到问题详述

    ### Struts2.5.16升级过程中遇到的问题详述 #### 一、概述 本文主要针对从旧版本Struts2框架升级至2.5.16版本时可能遇到的各种问题进行详细介绍,并给出相应的解决方案。这包括了jar包的替换与引入、配置文件的...

    MyEclipse下SSH配置详细步骤及异常处理

    接下来,我们详述在MyEclipse中配置SSH的步骤: ### 1. 创建项目 在MyEclipse中创建一个新的Dynamic Web Project,命名为你的项目名,例如"MySSHProject"。 ### 2. 添加SSH库 你需要为项目添加SSH框架的JAR文件。...

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    这个就不再详述,具体请看下面,经过详细排查,终于分析完毕相关包的作用,并整理完一套完整的包(由于大小问题没有上传,附图): struts2的包必须版本一致 不能即用2.1.6的包 又用到了2.1.8的包 ,其他版本类似...

    struts2 入门书籍

    ### Struts2 入门书籍知识点详述 #### 1. Struts2 框架简介 Struts2是一个开源的MVC(Model-View-Controller)架构的Web应用框架,它融合了WebWork框架的核心设计思想以及Struts1的一些优秀特性。Struts2旨在简化...

    struts2全部文件

    4. 配置解析库:如xwork-core.jar,负责解析Struts2的XML配置文件。 5. 依赖库:如ognl.jar、freemarker.jar,分别用于对象图形导航语言和模板引擎,是Struts2视图层的重要组成部分。 6. Servlet容器相关库:如...

    Struts2教程开发过程

    本教程将详述如何开发一个基本的Struts2程序。 **开发环境准备** 在开始开发之前,确保你已经安装了Java Development Kit (JDK)、Eclipse或MyEclipse等IDE以及Tomcat服务器。还需要下载Struts2的库文件,这些文件...

Global site tag (gtag.js) - Google Analytics