Struts2与XWork

来源:互联网 发布:无线网状网络 编辑:程序博客网 时间:2024/05/16 00:57

了解了Struts2的历史之后,我们知道Struts2来源于Webwork2。Webwork2之所以能够在技术上击败Struts1.X而成为新的框架Struts2的构建基础,主要是源于其优秀的设计思想。或许我们很难用一句话来准确描述这一设计思想的优越性体现在何处,但是当我们试图总结这种优秀思想中所蕴含的核心基石时,XWork将当仁不让地成为其中关键字的第一位。我们可以在XWork的官方网站上找到对XWork的一个大概描述:

XWork is a command-pattern framework that is used to power Struts 2 as well as other applications. XWork provides an Inversion of Control container, a powerful expression language, data type conversion, validation, and pluggable configuration.

XWork是Opensymphony开源组织贡献的另外一个开源项目,从其官方网站的介绍来看,XWork不仅提供了一系列基础构件,其中包括:一个IoC的容器、强大的表达式语言(OGNL)支持、数据类型转化、数据校验框架、可插拔的功能模块(插件模式)及其配置,并且在这一系列的基础构件之上,实现了一套基于Command设计模式的“事件请求执行框架”。

什么是“事件请求执行框架”呢?首先,这是一个基于“请求-响应”的处理器,能够对某一类“请求”做出相应的逻辑处理,并返回“响应”结果。其次,它定义了一套完整的事件逻辑处理的步骤,并且为每个步骤都提供了足够的扩展接口,使得整个事件的执行体系更为丰富、更加具备层次感和可扩展性。因而,“事件请求执行框架”就如同一条定义好的生产流水线,能够为我们提供完整的事件处理模型。回顾一下我们在上一章中提到的一个事件处理流水线的问题,XWork正是这样一个解决方案。

我们知道,所有B/S程序都是典型的基于“请求-响应”模式的Web应用。因而XWork天然地成了处理这种应用最合适的方案。有了XWork作为Struts2所依赖的底层核心,使得Struts2只需要关注与Web容器打交道的部分,而把其余的工作交给XWork即可。当Struts2收到一个Http请求时,Struts2只需要接收请求参数,交给XWork完成执行序列,当XWork执行完毕后,将结果交还Struts2返回相应的视图。可以看到,在整个过程中,XWork是这个“请求-响应”模式的执行核心。

XWork对于Struts2的地位如此重要,以至于Struts2的重大版本总是跟随着XWork的升级而变更。需要注意的是,Struts2的不同版本对XWork的版本依赖也是不同的,它们甚至是不兼容的。下面列出了Struts2发布以来它与XWork版本的兼容性情况:

struts2-core-2.0.x—xwork2.0.x

struts2-core-2.1.x—xwork2.1.x

struts2-core-2.2.x—xwork2.2.x

XWork不仅是Struts2的核心实现,也可以用于一切基于Command模式的Java程序。在实现Command模式时,XWork在其周围定义了丰富的执行层次,在每个执行层次中,都有足够的扩展点,使得我们可以将XWork视作一个工具包,简化我们的开发。

1 0
原创粉丝点击