1. Struts2和Struts1.x有什么区别,它们各自的发展足迹又如何
Struts1.X系列开发框架在开始的时候再世界范围内流行起来,很长一段时间内,其流行程度几乎可以说垄断了整个Web开发领域,成为Web开发领域的世纪开发标准。随着时代的进步,许多程序员发现了Struts1.X在设计中存在的严重不足,于是开始慢慢没落。
Apache社区和Opensymphony开源组织联合推出了Struts2,随着Struts2的不断升级,我们不仅从中获得了越来越便利的开发模式,也可以体会到整个web开发的发展历程。
Struts2来自于Webwork2,并且与Struts1.x完全不兼容
2. Struts2依赖于那些核心技术?
表示层技术、设计模式、OGML、XWork
3.Struts2可以应用在什么样的项目中
当需要建立一个由复杂的业务逻辑和众多页面构成的Web应用是,我们不得不采用分层开发模式。Struts2就可以作为一个表示层的解决方案,帮助我们进行与表示层相关的开发工作,冰提供在表示层范围内高度的可扩展性和可维护性。
4. Struts2可以分成哪两条逻辑运行主线
第一条主线:
Struts2的初始化:init方法驱动执行
第二条主线:
Struts2处理http请求:doFilter方法驱动执行
两条主线完全没有交叉,时间节点和触发条件都不同。
5. Struts2在处理Http请求时,可以分为哪两个主要阶段
第一阶段 —— Http请求预处理
在这个阶段,执行控制权在Struts2手中
针对于每个Http请求进行预处理,为真正的业务逻辑执行做必要的数据环境和运行环境的准备。
依赖于web容器,并时时刻刻将于web容器打交道作为主要工作。
第二阶段 —— XWork执行业务逻辑
在这个阶段,执行控制权在XWork手中
预处理完后,http请求的数据被封装为Java对象,由XWork负责执行具体的业务逻辑。
不依赖于Web容器,完全由XWork框架驱动整个执行过程。
6. Struts2通过哪些元素的相互配合来完成初始化运行主线
1. 数据结构的定义:
核心构成元素:容器及其实现类
元素名称 | Java Package | 描述 |
Container | com.opensymphony.xworks.inject | 容器定义接口,是Struts2内部进行对象管理的基础构建 |
ContainerImpl | com.opensymphony.xworks.inject | 容器的实现类,内部实现了Struts2进行对象生命周期管理和依赖注入的基本功能 |
PackageConfig | com.opensymphony.xworks.config.entities | PackageConfig实体类,其中定义了时间响应模型的完整数据结构 |
两个相辅相成的元素配合共同完成:加载接口(Provider)和构造器(Builder)
元素名称 | Java Package | 描述 |
ConfigurationProvider | com.opensymphony.xworks.config | 配置加载接口的统一接口。Struts2将初始化元素分为Container和PackageConfig两类,这里使用多重继承将两类配置加载接口进行统一 |
ContainerProvider | com.opensymphony.xworks.config | Container的配置加载接口,其实现类需要负责初始化容器中的所有对象 |
PackageProvider | com.opensymphony.xworks.config | PackageConfig的配置加载接口,其实现类需要负责初始化用于处理事件请求的配置对象 |
ContainerBuilder | com.opensymphony.xworks.inject | Container的构造器,用于在初始化时构造容器 |
PackageConfigBuilder | PackageConfig的内部类 | PackageConfig的构造器,用于在初始化时构造PackageConfig |
2. 初始化行为的操作接口
辅助元素
元素名称 | Java Package | 描述 |
ConfigurationManager | com.opensymphony.xworks.config | 配置行为操作代理类,包含了所有ContainerProvider和PackageProvider的实现 |
Configuration | com.opensymphony.xworks.config | Struts2配置数据的管理类,作为运行时获取配置的基本接口。承载所有配置的结构化数据和操作方法 |
7. Xwork框架主要有哪些元素构成?他们之间有什么关系
元素名称 | Java Package | 描述 |
ActionProxy | com.opensymphony.xwork2 | XWork生产线中的执行环境,整个生产线的入口,如一个口袋一样封装了所有的执行细节 |
ActionInvocation | com.opensymphony.xwork2 | XWork生产线中的调用者,负责调用整个生产线中各个元素的执行次序 |
Interceptor | com.opensymphony.xwork2.interceptor | XWork生产线中的工序序列,可以丰富整个生产线的功能 |
Action | com.opensymphony.xwork2 | XWork生产线的核心工序,负责核心业务逻辑调用和实现 |
ActionContext | com.opensymphony.xwork2 | XWork生产线的辅助设备,提供整个生产线工作运行所必须的数据环境 |
ValueStack | com.opensymphony.xwork2.util | XWork数据环境中提供表达式运算的工具类,也是XWork中进行数据访问的基础 |
Result | com.opensymphony.xwork2 | XWork生产线中的末端设备,负责输出生产线的生产结果 |
8. Struts2有哪些配置表现形式
9. Struts2中的配置元素可以为什么哪两个大类
容器配置元素 关系映射元素
10. 什么是配置元素的对象化过程
11. Struts2的配置元素的对象化过程由哪两个大元素配合完成