首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

xwork.xml配备详解

2012-10-25 
xwork.xml配置详解xwork.xml中 组成Action配置的各个元素 组成Action配置的各个元素,例如 :1actions2inter

xwork.xml配置详解
xwork.xml中 组成Action配置的各个元素
组成Action配置的各个元素,例如 :

1actions
2interceptors
3results
4package
一 :包的配置


Packages是把

1Actions
2Results
3Result Types
4Interceptors
5Stacks
分组成逻辑单元的一种方式,以分享一些共同设置.

包跟对象一样可以扩展,也可以被"子"包覆盖部分属性.



1 : "extends"属性使一个package可以继承一个或多个前面package中的 :

1拦截器
2拦截器栈
3action等配置
注意,配置文件是被至上而下处理的,所以"被继承"的包必需定义在"继承"包的上面.

2 : "abstract"表示一个包为抽象包

这样的包可以被继承,但是不能有action的定义
3 :  xwork.xml中包的例子

1<xwork>
2
3    <include file="webwork-default.xml"/>
4
5    <include file="config-browser.xml"/>
6
7    <include file="xwork-continuations.xml"/>
8
9    <include file="xwork-tags.xml"/>
10   
11    <include file="xwork-validation.xml" />
12   
13    <include file="xwork-actionchaining.xml" />
14
15    <include file="xwork-ajax.xml" />
16
17    <include file="xwork-fileupload.xml" />
18
19    <include file="xwork-person.xml" />
20
21    <include file="xwork-wait.xml" />
22
23    <include file="xwork-token.xml" />
24   
25    <include file="xwork-model-driven.xml" />
26   
27    <include file="xwork-filedownload.xml" />
28
29    <package name="default" extends="webwork-default">
30        <interceptors>
31            <interceptor-stack name="crudStack">
32                <interceptor-ref name="params" />
33                <interceptor-ref name="defaultStack" />
34            </interceptor-stack>
35        </interceptors>
36       
37        <default-action-ref name="showcase"/>
38       
39        <action name="showcase">
40            <result>showcase.jsp</result>
41        </action>
42
43        <action name="date" extends="default" namespace="/skill">
50        <default-interceptor-ref name="crudStack"/>
51
52        <action name="list" method="list">
53            <result>/empmanager/listSkills.jsp</result>
54            <interceptor-ref name="basicStack"/>
55        </action>
56        <action name="edit" />
59            <interceptor-ref name="basicStack"/>
60        </action>
61        <action name="save" method="save">
62            <result name="input">/empmanager/editSkill.jsp</result>
63            <result type="redirect">edit.action?skillName=${currentSkill.name}</result>
64        </action>
65        <action name="delete" method="delete">
66            <result name="error">/empmanager/editSkill.jsp</result>
67            <result type="redirect">edit.action?skillName=${currentSkill.name}</result>
68        </action>
69    </package>
70
71    <package name="employee" extends="default" namespace="/employee">
72        <default-interceptor-ref name="crudStack"/>
73
74        <action name="list" method="list">
75            <result>/empmanager/listEmployees.jsp</result>
76            <interceptor-ref name="basicStack"/>
77        </action>
78        <action name="edit" method="save">
83            <result name="input">/empmanager/editEmployee.jsp</result>
84            <result type="redirect">edit.action?empId=${currentEmployee.empId}</result>
85        </action>
86        <action name="delete" method="delete">
87            <result name="error">/empmanager/editEmployee.jsp</result>
88            <result type="redirect">edit.action?empId=${currentEmployee.empId}</result>
89        </action>
90    </package>
91
92</xwork>

二 :名称空间的配置

1 :名称空间        

      名称空间属性允许把action配置分成不同的名称空间,这样您可以在具有不同类和参数名称空间中使用相同的名字的action了.

这一点是和Webwork1.x不同,在Webwork1.x中所有的action名字都是全局的不能再一个应用程序中重用.
2 :默认名称空间

      默认名称空间用""(空字符串)表示.如果系统在指定的名称空间中没有找到某个action,就会到默认名称空间中查找.你可以在所有用"extends"扩展的名称空间外配置全局action,就像Webwork 1.x那样不指定名称空间(即作为默认名称空间).
      名称空间也可以用来实现系统安全,例如action名字之前可以有个路径,这个路径就是Webwork 2.0 ServletDispatcher用的名称空间,你可以在路径上使用J2EE声明式的安全限制,这种方式很容易的实现和维护。

3 :根名称空间


       Webwork中以"/"命名的名称空间叫做根名称空间,它是请求直接来自应用程序根路径的时候的名称空间.

和其他名称空间一样,如果在根名称空间中没有所需的action别名,系统会回到默认名称空间中查找.

4 :名称空间的例子

1<package name="default">
2    <action name="foo" type="dispatcher">greeting.jsp</result>
4    </action>
5    <action name="bar" type="dispatcher">bar1.jsp</result>
7    </action>
8</package>
9
10<package name="mypackage1" namespace="/">
11    <action name="moo" type="dispatcher">moo.jsp</result>
13    </action>
14</package>
15
16<package name="mypackage2" namespace="/barspace">
17    <action name="bar" type="dispatcher">bar2.jsp</result>
19    </action>
20</package>
解释 :

         如果请求为/barspace/bar.action,系统首先查找'/barspace'名称空间,如果找到bar action便执行,如果没有继续到默认名称空间中查找.在这个例子中'/barspace'空间中存在bar别名,所以它会被执行,如果返回success结果,请求将指向bar2.jsp.

        如果请求为/barspace/foo.action,系统会在/barspace空间中查找foo这个action,如果找不到,系统继续在默认名称空间中查找.除非指定成其他的,否则默认空间是"".在我们上面的例子中,/barspace空间中没有foo这个action,这样默认空间中的/foo.action会被找到并执行.

         如果请求为/moo.action,系统会在根空间('/')中查找'moo' action别名,如果没找到再到默认空间中查找.在这个例子中,moo这个action别名存在因此会被执行.如果返回success,请求指向moo.jsp.

         如果请求为'/foo.action',系统会在'/'空间中查找,找到后执行,如果没有,继续查找默认空间.在本例中,foo这个action别名不存在于'/'空间,所以系统回到默认空间中查找并执行.

注意:名称空间只有一个级别.例如如果url是'/barspace/myspace/bar.action',Webwork先试着查找'/barspace/myspace',在本例中是不存在的.接着就直接到 默认空间 中查找'bar'这个action别名.结果在默认空间中的bar会被执行.

热点排行