Struts2 web.xml配置

1. 核心控制器及参数配置

任何MVC框架都需要与Web应用整合,就不得不依赖于web.xml文件,只有配置在web.xml文件中的Servlet、Filter才会被应用加载。

所有MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架而言,其需要加载FilterDispatcher,只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载应用的Struts2框架。

FilterDispatcher实质是一个过滤器,它负责初始化整个Struts框架并且处理所有的请求。这个过滤器可以包括一些初始化参数,有的参数指定了要加载哪些额外的xml配置文件,还有的会影响Struts2框架的行为。除了FilterDispatcher外,Struts2还提供了一个ActionContexCleanUp过滤器,它的主要任务是当有其它一些过滤器要访问一个初始化好了的Struts2框架的时候,负责处理一些特殊的清除任务。ActionContexCleanUp过滤器主要配合其他插件过滤器使用。详细配置,如下图所示:

clip_image002

clip_image004

其中有3个初始化参数有特殊意义:

config:该参数的值是一个以英文逗号(,)隔开的字符串,每个字符串都是一个XML配置文件的位置。Struts 2框架将自动加载该属性指定的系列配置文件。

actionPackages:该参数的值也是一个以英文逗号(,)隔开的字符串,每个字符串都是一个包空间,Struts 2框架将扫描这些包空间下的Action类。

configProviders:如果用户需要实现自己的ConfigurationProvider类,用户可以提供一个或多个实现了ConfigurationProvider接口的类,然后将这些类的类名设置成该属性的值,多个类名之间以英文逗号(,)隔开。

除此之外,还可在此处配置Struts 2常量,每个<init-param>元素配置一个Struts2常量,其中<param-name>子元素指定了常量name,而<param-value>子元素指定了常量value。

至于filter-mapping属性是过滤器(Filter)必须的一个属性,用于过滤请求的路径,此处一般就设为/*形式,对所有请求uri进行拦截(过滤),除非你要做一些特殊的处理。

2. 标签库配置

如果web容器是J2EE1.3(servlet2.3)及以前的规范,由于不会自动加载struts的标签库,所以需要在web.xml文件中手动加载struts的标签库,将struts-tags.tld文件,一般复制放在WEB-INF下面,可以自己指定,在web.xml中配置的加载标签定义文件如下:

clip_image006

但如果web容器是J2EE1.4(servlet2.4),那么web容器会自动加载标签库,Struts 2的标签库定义文件包含在struts2-core-2.1.6.jar文件里,在struts2-core-2.1.6.jar文件的META-INF路径下,包含了一个struts-tag.tld文件, 这个文件就是Struts 2的标签库定义文件,Servlet 2.4规范会自动加载该标签库文件,避免了在web.xml文件中重新定义Struts2标签库文件的URI。其中struts-tags.tld文件里包含了加载信息的片断,如下:

image