XWork是一个通用的命令框架,其内核主要由六个大的部分组成:
1 xwork命令框架六大件之"命令"(Action)
所有命令实体可以实现此接口,它可以看成是命令的实体,但从XWork1.1起,命令实体不一定非实现此接口不可
2 xwork命令框架六大件之"结果"(Result)
此接口可以看成所有,命令执行后返回的结果的实体表示
3 xwork命令框架六大件之"参数"(ActionContext)
在整个命令执行过程中,各个组件之间需要进行参数交换,与数据的临时存储,此个与线程绑定的为题,主要用来完成这个任务
4 xwork命令框架六大件之"拦截器"(Interceptor)
拦截器主要是利用面向切面编程的思想为各种各样的命令执行抽取通用的功能组件
5 xwork命令框架六大件之"代理"(ActionProxy)
代理它是命令Action与XWork框架之间一个额外的层,它可以让命令业务的书写与框架更好的解耦
6 xwork命令框架六大件之"执行器"或者说"控制器"(ActionInvocation)
此组件在六大件中充当一个导演的角色,它负责组织各组件之间的协调工作 一个ActionInvocation表现为一个Action的执行状态
使用xwork的过程:
关于xwork框架使用,可以参考XWork类的代码,它可看成是使用xwork框架的一个简单的对外接口,在xwork框架中内部容器的管理是非常重要的一个环节,如果没有它整个框架基本上运行不起来,xwork的内部容器给人的感觉就像是一个完全封闭的系统,让人无从下手,但它还是存在突破口的,它的突破口就在容器对象Container,这个对象管理着xwork内部运行所有内部组件,有了它你就等于拥有了所有组件的访问权限,当然容器是xwork的重要部分但是它只负责框架内部组件的管理,它实际并不是通用命令框架的主角,命令框架的主角实际是与action相关的一系列组件。你可以从XWork类代码可以看出使用框架一般需要一个配置管理器,而一个配置管理器需要提供一个配置对象,而在一个配置对象中必须提供一个容器对象,有了容器对象你就可以从容器中获取一个ActionProxyFactory对象,再使得这个对象创建一个ActionProxy对象,有了它你就可以开始命令执行的梦幻之旅,因为在之后创建的每一个组件都可以获取容器对象,那就等于它们可以掌握一切,还要注意一点,容器对象本身也处于容器中
以下为xwork的结构图: