`

Webwork之Action配置详解

阅读更多
Webwork之Action配置详解
                        作者:Davy Lee, davy.lee@126.com

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

1.  让你的xwork.xml文件包含webwork-default.xml,因为它里面包含了许多默认的配置
代码如下:
<include name=”webwork-default.xml”/>

2.使用隐式默认的result类型有助于减少必需的配置内容,代码如下:
<xwork>
<include name=”webwork-default.xml”/>
<package name=”default” extends=”webwork-default”>
<result-types>
<result-type name=”velocity” class=”com.opensymphony.webwork.dispatcher.VelocityResult”default=”true” />
</result-types>
<action name=”login”
       class=”dealLogin”  method=”doLogin”>
     <result name=”success”>userIndex.htm</result>
</action>
</package>
</xwork>

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

3.运用全局的result映射减少重复的配置,你可以为每个package定义任意数量的全局result映射,即<global-results>,代码如下:
<xwork>
<include name=”webwork-default.xml”/>
<package name=”default” extends=”webwork-default”>
<result-types>
<result-type name=”velocity” class=”com.opensymphony.webwork.dispatcher.VelocityResult”default=”true” />
</result-types>
<global-results>
  <result name=”error” type=”velocity”>/error.htm</result>
</global-results>
<action name=”login”
       class=”dealLogin”  method=”doLogin”>
     <result name=”success”>userIndex.htm</result>
</action>
</package>
</xwork>

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

4.使用默认的interceptor-ref减少拦截机(栈)的重复配置,可以为每个package定义一个默认的interceptor-ref,代码如下:
<xwork>
<include name=”webwork-default.xml”/>
<package name=”default” extends=”webwork-default”>
<result-types>
<result-type name=”velocity” class=”com.opensymphony.webwork.dispatcher.VelocityResult”default=”true” />
</result-types>
<global-results>
  <result name=”error” type=”velocity”>/error.htm</result>
</global-results>
<interceptors>
  <interceptor name=”param” class=”…”/>
  <interceptor name=”timer” class=””/>
</interceptors>
<default-interceptor-ref  name=”param”/>
<action name=”login”
       class=”dealLogin”  method=”doLogin”>
     <result name=”success”>userIndex.htm</result>
</action>
</package>
</xwork>

这样我们就为这个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 -----------------------------------------------
<xwork>
<include name=”webwork-default.xml”/>
<package name=”default” extends=”webwork-default”>
<interceptors>
  <interceptor name=”auth” class=”org.hibernate.auction.web.interceptors.AuthenticationInterceptor”/>
  <interceptor name=”timer” class=””/>
</interceptors>
<global-results>
  <result name=”error” type=”velocity”>/error.htm</result>
</global-results>
</package>
</xwork>

------------------------------------------------------ xwork-public .xml ---------------------------------------
<xwork>
<package name=”public” extends=”default” namespace=”/public”>
<default-interceptor-ref name=” completeStack” />

<action>
  ……………
</action>
</package>
</xwork>

----------------------------------------------------xwork-secure.xml----------------------------------------
<xwork>
<package name=”secure” extends=”default” namespace=”/secure”>
  <interceptor-stack name=”default”>
   <interceptor-ref name=”auth”/>
   <interceptor-ref name=”completeStack”/>
</interceptor-stack>
<default-interceptor-ref name=”default” />
<!—受保护的action-->
<action>
  ……………
</action>
</package>
</xwork>

(全文完,作者:Davy Lee,邮件地址:davy.lee@126.com)


  


  
分享到:
评论
3 楼 crazyasp 2008-06-18  
不错,有我想要的:<global-results>  <result name=”error” type=”velocity”>/error.htm</result> </global-results>
2 楼 DavyLee 2007-07-23  
这不是原文,里面有我的话,条理结构也是我组织的,当然我的确是参照的《webwork in action》,而且文中也提到了!但要写“摘自某某”,我觉得我的笔墨就玷污了那本书了
1 楼 tornyz 2007-07-23  
应该注明"(摘自<<Webwork in action>>一书)"...

相关推荐

    webwork资料

    1. **WebWork之Action配置详解**: WebWork中的Action是处理用户请求的核心组件。Action配置是定义Action行为的重要环节,包括指定Action类、处理方法、结果页面等。通过配置文件,你可以定义Action的输入、输出、...

    webwork配置详解

    总结来说,WebWork 配置涉及Action的创建、ActionContext的理解和使用、ServletDispatcher的调度机制,以及Action的测试和Result Type的设置。熟练掌握这些知识点,能够帮助开发者高效地构建和维护基于WebWork的Java...

    webwork in action

    根据提供的文件信息,本书《WebWork in Action》主要聚焦于Java WebWork框架的应用与实践,是一本详尽介绍WebWork框架各个方面的书籍。下面将基于标题、描述、标签及部分内容来提取并归纳出相关的IT知识点。 ### ...

    详解Webwork中Action 调用的方法

    - 在`invoke`过程中,ActionInvocation会根据Action配置的拦截器链(Interceptor Chain)执行拦截器,这些拦截器可以用来做权限检查、日志记录等预处理或后处理工作。 - 最后,Action的执行结果会被转换成对应的...

    WebWork2配置.pdf

    ### WebWork2配置详解 #### 一、简介 WebWork2是基于Java的企业级Web应用程序框架,它提供了灵活且强大的工具来构建复杂的应用程序。本文档旨在为初学者提供一个全面深入的理解,涵盖WebWork2的基本配置过程以及...

    webwork详细讲解.doc

    3. **Action执行**:根据请求的URL路径,`ServletDispatcher`会查找相应的Action配置,并创建对应的Action实例。 4. **业务逻辑处理**:Action类通常包含了业务逻辑的处理方法,比如数据库操作、数据处理等。 5. **...

    webwork教程

    - xwork.xml是WebWork的核心配置文件,用于定义Action、拦截器、结果类型等配置信息。 - 文件中包含了各种标签元素,用于配置不同的组件。 #### 五、实战案例 - **G-Roller-WW**: - 本节介绍如何将G-Roller与...

    WebWork_开发指南

    ### WebWork 开发指南知识点详解 #### 一、WebWork框架概述 - **WebWork**:WebWork 是一款用于构建企业级 Java Web 应用程序的框架,它以模型-视图-控制器(MVC)架构为基础,为开发者提供了一种更加灵活的方式来...

    webwork教程很好的学习教程

    - **工作原理**:当接收到HTTP请求时,ServletDispatcher会解析请求路径,找到对应的Action配置,并创建Action实例。然后执行Action的`execute()`方法,根据返回的结果选择合适的视图进行渲染。 #### 七、Action的...

    WebWork 教程

    #### XWork配置详解 Xwork的配置主要通过xwork.xml文件进行,该文件包含了框架运行所需的各项配置信息,如Action定义、拦截器配置、验证规则等。深入理解xwork.xml的结构和元素,对于合理配置和优化WebWork应用具有...

    WebWork文档(PDF)

    **WebWork技术详解** WebWork是一款基于Java的轻量级MVC(Model-View-Controller)框架,它在早期Web应用开发中起到了重要的作用。WebWork的核心设计理念是提供灵活、可扩展的控制器层,帮助开发者将业务逻辑与表现...

    Webwork Web开发框架

    ### WebWork Web开发框架知识点详解 #### 一、WebWork框架概述 - **定义与特点**:WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)架构的J2EE Web开发框架。它专注于组件化设计和代码重用,...

    Struts 2 技术详解:基于WebWork核心的MVC开发与实践

    3. **配置管理器**:通过XML配置文件或注解来定义Action的映射、拦截器链以及结果视图。 4. **Interceptor(拦截器)**:类似于AOP(面向切面编程),提供预处理和后处理功能,例如日志、权限验证、事务控制等。 5...

    WebWork中文文档

    4. **配置文件详解**:学习如何配置WebWork框架,包括如何设置Action的映射、拦截器链等。 5. **高级特性探索**:进一步学习WebWork框架的高级特性,如国际化、异常处理、类型转换和验证等。 6. **参与社区**:加入...

    webwork2.2.7+spring+hibernate+oracle整合

    #### 二、核心配置详解 ##### 1. WebWork配置 - **webwork.properties**:该文件用于指定WebWork的运行配置。其中,`webwork.objectFactory=spring` 这一行表示WebWork将使用Spring作为对象工厂,即所有的Action...

    webwork2教程

    ### WebWork2 教程详解 #### 一、引言 WebWork2 是一款轻量级的 Java Web 开发框架,它遵循 MVC (Model-View-Controller) 设计模式,旨在简化 Web 应用程序的开发流程。通过本文档的学习,您将能够掌握 WebWork2 ...

    Webwork教程

    ### Webwork教程知识点详解 #### 一、WebWork框架简介 **WebWork**是一个开源的Java Web应用程序框架,它的设计理念是简化Web应用的开发过程,提高开发效率。随着时间的发展,WebWork逐渐演变成了**Struts2**框架...

    WebWork教程-0.90版

    #### 四、配置详解 **XWork配置**是WebWork的核心配置文件,定义了Action的映射关系及其他配置项。 - **xwork.xml文件的标签元素** 包括Action映射、拦截器配置、结果类型定义等。 #### 五、实战案例 ##### ...

    webwork搭建步骤

    ### WebWork搭建步骤详解 #### 一、WebWork简介与下载 在开始介绍WebWork的搭建之前,我们先简要了解一下WebWork框架。WebWork是一个开源的Java Web应用框架,它提供了一种灵活的方式来处理HTTP请求,并将这些请求...

Global site tag (gtag.js) - Google Analytics