配置概览
从形式上讲,struts2的配置元素的表现形式以xml为核心,而properties文件则作为另外一种配置形式起到辅助作用,以上应用级别的配置文件,只有web.xml是必须的,而struts2框架中的xml文件的配置元素定义是properties文件的配置元素定义的超集。
配置元素定义
include节点
语法:<include file="..."/>
作用:帮助我们管理struts2的配置文件,实现配置文件的模块化(另外一种进行配置模块化管理的方式就是使用”继承“机制)
bean结点
bean节点是一个用于描述接口及其实现类映射关系的节点,其寻址方式是通过name属性和type属性共同构成一个逻辑主键来共同决定一个class属性
struts2在框架级别实现了一个对象容器,并将配置文件中所有bean节点所定义的对象纳入容器中进行管理。struts2通过这个容器在框架级别负责这些对象的创建、销毁以及依赖关系处理。struts2不仅实现了一个容器,并且还在容器的基础上实现了依赖注入(IoC),从而使得所有struts2中所定义的对象都可以被有条不紊地创建、执行、和销毁。
在应用级别的配置文件中,通过增加bean节点,就可以把一个对象纳入struts2容器中进行管理。此时,我们可以通过struts2提供的容器访问接口(原生API方式)或者依赖注入的方式,获得我们自定义的这个bean对象并使用
constant节点
constant节点主要用于定义struts2运行时的参数。在struts-default.xml中,我们很少看到constant节点的定义,因为struts2主要使用了properties文件来定义运行时的参数而并非将他们放在xml中。
constant节点中所有运行时的参数定义与bean节点一样,也会在系统初始化时被加载到struts2的容器中进行统一的管理,即struts2的容器不仅仅负责对struts2所有内置对象的管理,还要负责对系统的运行参数进行管理。 struts2将两者进行统一的主要好处在于struts2在内部对与这些框架相关的运行对象或者运行参数可以一视同仁地进行处理,通过统一的容器访问接口(或者依赖注入的方式),struts2可以从容器中方便地组织起整个程序的架构。这种统一性可大大降低编程的复杂度,使struts2的运行机制更为顺畅。
package节点
bean节点、constant节点,它们都与框架自身的运行状态有关,并且被struts2内部的容器所管理。而package节点的作用却是定义一种映射关系,更多反映了框架如何与外部程序进行交互的过程。
在package节点的属性之中,name是一个唯一的标识符,namespace则从命令空间的角度为整个事件请求机制划分不同的种类。在运行期,我们可以认为name属性和namespace属性都用于对请求进行逻辑划分。
节点分类
bean节点和constant节点,一个是构成程序运行的对象,而另外一个用于指定程序运行的执行参数,这类配置元素称之为“容器配置元素”;package节点定义了一种事件请求响应的映射关系,反映的是struts2对于外部事件请求时如何进行响应的处理序列,这类称之为“事件映射关系”
参考:整理归纳自《struts2技术内幕——深入解析struts2架构设计与实现原理》