Webwork之Action配置详解

Webwork之Action配置详解
作者:Davy Lee, [email protected]

Webwork的核心是负责web应用程序中具体逻辑实现的action,本文的目的就是对action的配置、xwok.xml文件的部署进行详细的阐述,本文先列出配置action的注意事项及技巧,最后将给出一个具体的配置实例。

1. 让你的xwork.xml文件包含webwork-default.xml,因为它里面包含了许多默认的配置
代码如下:
[code][/code]

2.使用隐式默认的result类型有助于减少必需的配置内容,代码如下:
[code]






class=”dealLogin” method=”doLogin”>
userIndex.htm



[/code]
这样我们在default这个package中指定了默认的result-type为velocity,则在此包中配置的名为login这个action中,虽然结果result没有写type=”velocity”,webwork仍然会按照默认的结果类型即velocity进行调度。

3.运用全局的result映射减少重复的配置,你可以为每个package定义任意数量的全局result映射,即,代码如下:
[code]







/error.htm

class=”dealLogin” method=”doLogin”>
userIndex.htm



[/code]
这样我们执行login.action如果返回的标识码为error,尽管我们没有单独对login这个action定义result=”error”接点,webwork还是会定向到/error.htm页去。这里要注意两点,第一,局部的映射会覆盖掉全局映射;第二,全局映射要用绝对地址。

4.使用默认的interceptor-ref减少拦截机(栈)的重复配置,可以为每个package定义一个默认的interceptor-ref,代码如下:
[code]







/error.htm






class=”dealLogin” method=”doLogin”>
userIndex.htm



[/code]
这样我们就为这个package 指定了默认的拦截机paramInterceptor,如果此包中的login这个action没有显式指定interceptor,则webwork会按照param拦截机来处理。这里提醒两点:第一,可以把多个interceptor按照顺序组合起来组成interceptor-stack,然后把这个interceptor设置成default-interceptor-ref;第二,如果为某个action如login.action定义了interceptor,则会覆盖掉default-interceptor-ref,webwork会忽略掉default-interceptor-ref,只会按照局部的interceptor来处理。

5.package,抽象package和namespace
(1).抽象package和package很类似,只是里面不能有具体的action的映射,它的作用是提供基础的package的配置,供其他package扩展(或说继承).可以通过设置布尔类型的abstract属性为true来标识一个package为抽象package.(这个我没有试验,大家可以试验一下,呵呵)。
(2).namespace,命名空间,如果某个package 没有指定namespace,则它的默认namespace为“ ”,webwork会把你的url拆分成namespace和action名字两部分,然后webwork就会从xwork.xml中查找namespace/action命名对,如果找不到,就到默认的namespace中去找;大型应用中,应该尽量减少定义在default namespace中的action的数目。

对于webwork的action的配置,我就介绍到这里,有不当之处欢迎大家指正。最后给大家的是一个具体的例子,来自《webwork in action》一书,只为演示,供大家参考。以下例子中有3个package,default package提供基础配置,secure package存放需要认证的action,public package 存放公开的action,详细配置文件如下:
------------------------------------------------------ xwork.xml -----------------------------------------------
[code]








/error.htm



[/code]
------------------------------------------------------ xwork-public .xml ---------------------------------------
[code]





……………



[/code]
----------------------------------------------------xwork-secure.xml----------------------------------------
[code]









……………



[/code]
(全文完,作者:Davy Lee,邮件地址:[email protected])

[code]

你可能感兴趣的:(Webwork,velocity,XML,Web,J2EE开发)