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视作一个工具包,简化我们的开发。
- Struts2与XWork
- 关于xwork(struts2)拦截器体系的思考与分析
- Struts2 xwork源代码下载
- 源码-struts2-xwork
- struts2 xwork微观结构
- Struts2/XWork 安全漏洞及解决办法
- Struts2/XWork 安全漏洞及解决办法
- Struts2/XWork 安全漏洞及解决办法
- Struts2(XWork)中的Container 一
- 关于struts2 xwork数据校验
- spring与xwork整合
- XWork
- XWork
- xwork
- Struts2/XWork 安全漏洞及解决办法(了解)
- Struts2/XWork远程执行任意代码漏洞
- 深入struts2 (一)---Xwork介绍
- (Struts2)XWork容器的实现机理
- Log4j扩展使用--日志格式化器Layout
- Springmvc:前后端传参方式总结
- java找不到或无法加载主类
- web应用中log4j应用--log4j.xml同时输出多种日志
- Android-节日短信送祝福(UI篇:3-选择联系人、发送短信、显示历史记录)
- Struts2与XWork
- iOS小明开发笔记(六) (SDWebImage简单使用)
- #HDU 3790 最短路径问题 【Dijkstra入门题】
- Node.js编程快餐(1) - 按行读取文本文件
- scikit-learn Tutorials (1)
- hibernate 中lazy、banth 、fetch的对比
- 简单的 struts2 action model & form 提交的演示
- 图解python入门
- scikit-learn Tutorials (2)