Struts 2 struts.xml详解(一)
?
? ? ? ? Struts 2用配置文件(struts.xml)初始化它的资源。这些资源包括:
拦截器---用于预处理和后处理请求的拦截器
Action类---用于调用业务逻辑处理和数据访问代码的Action类
结果---可以用JavaServer Pages, Velocity 和 FreeMarker模板预览的结果
? ? ? ? 在运行时,一个程序只有一个配置。这个配置是在运行前由一个或者多个的xml文件定义而成的,包括默认的struts.xml文件。可以配置的元素有:packages,namespaces, includes, actions, results, interceptors, 和 exceptions。
? ? ? ? Struts.xml是Struts2 框架的核心配置,它要放在web程序的classpath中。
? ? ? ? Struts 2 配置文件的特性:
? ? ? ? Struts.xml允许被拆分成几个小的文件,然后可以根据需要引进要包含的配置文件。例如:
?
??
? ? ? ? 如果程序的功能不依赖于struts.xml可以将它彻底删除掉。有一些配置是可选的如:注释(annotations), web.xml启动参数(web.xml startupparameters), 和 变化的URL映射规则(alternate URL mapping schemes)。还有一些配置是需要struts.xml文件的支持的如:全局结果(global results), 异常处理(exception handling), 以及自定义拦截器栈(the custom interceptor stacks)。
Struts.xml分析
? ? ? ? <struts>标签是整个struts.xml的根。它之下还包含package,include, bean和constant标签。
1.? package标签
? ? ? ? Package用来将actions, results, resulttypes, interceptors, and interceptor-stacks等组成一组并分成一个逻辑单元。每个package是多个Action、多个拦截器、多个拦截器引用的集合。Package和object类似,可以被继承,被子package重载(覆盖)。
Package用来组合具有相同属性的配置如相同的拦截器栈或者相同的命名空间。
属性
是否必须
描述
值
name
yes
用于其他package引用的唯一标识
必须唯一
extends
no
继承其他package的配置(在此之前配置的package)
要被扩展的包名
namespace
no
提供从URL到package的映射
例如:在两个namespace属性分别为pack1和pack2包中,访问的URL就应该是?/webApp/pack1/my.action和?/webApp/pack2/my.action
abstract
no
描述此package是否是abstract的(不能定义action)
true/false
? ? ? ? 注:配置文件是按顺序从头开始处理加载的,所以扩展package所引用的package必须在此之前就定义好的。
? ? ? ? 配置示例:
?4.? constant标签
? ? ? ? Constant有两个重要的应用:
? ? ? ? 用来重新配置最大上传文件大小或者struts框架是否应该处于devMode(=?development mode)模式。
? ? ? ? 用来指定在多个实现给定type的bean中应该选择哪一个。
? ? ? ? Constants可以在多个文件中声明。默认的,constants是以下面的顺序搜索的,之后的覆盖之前的。
? ? ? ? ? ? ? ? struts-default.xml
? ? ? ? ? ? ? ? struts-plugin.xml
? ? ? ? ? ? ? ? struts.xml
? ? ? ? ? ? ? ? struts.properties
? ? ? ? ? ? ? ? web.xml
? ? ? ? 在struts.properties文件中,每个条目都被认为是一个常量。在web.xml中,任何FilterDispatcher的初始化参数都是以常量被加载的。
属性
是否必须
描述
name
yes
常量的名字
value
yes
常量的值
? ? ? ? Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射, 及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件主义了Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。
? ? ? ? 配置示例:
?? ? ? ? 以上指定了资源文件的放置在classes目录下,基本名是messages,则在classes目录下您就应该放置类似messages_zh_CN.properties,message_en.properties名的文件。并且指定struts的模式是devMode(=development mode)模式。