`
zhangxiang390
  • 浏览: 216675 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

XWork配置详述

阅读更多

        XWork 配置文件是以“ xwork ”命名的 .xml 文件,它必需放到类路径( classPath )的根目录, Web 应用一般放在 classes 目录中,它需要遵守 DTD 的规范(现在是 xwork-1.0.dtd )。这个文件定义了我们的 Action Interceptor Result 的配置和相互之间的映射。下面我们看看用户注册的完整 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 xwork 配置文件的所有内容,都是定义在 <xwork> 标签中,它的直接子标签有 <package> <include>

Package 我们的 Action Interceptor Result 都是在此标签中定义。 <package> 标签有一个必需的属性“ name ”,它用来标识唯一的一个 package 。属性“ extends ”是可选的,它用来继承前面定义的一个或一个以上 package 配置信息,包括所有的 interceptor interceptor-stack action 的配置信息。注意,配置文件按文档的顺序,由上向下执行,因此,用“ 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" 表示如果在 Action result 中不指定 result-type ,就使用这个默认的 result-type

 

Interceptors 它是一个简单的 <interceptors>  <interceptors/> 标签,我们的 interceptor interceptor-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>

Action Interceptor-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 的名称和它所在 package namespace 去配置文件中取得这个 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 ”的值,对应前面定义的 interceptor interceptor-stack 如果 Action 中没有用 <interceptor-ref> 标签指定拦截器,它将使用默认的 <default-interceptor-ref > 标签定义的拦截器。

 

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

分享到:
评论

相关推荐

    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