问题
你想要将一个大型的struts-config.xml文件分为多个小文件,以便改善组织和更易维护,特别是在团队开发的过程中。
动作要领
将一个struts-config.xml分解为多个配置文件。每一个都必须是良好的struts-config.xml配置文件,并且能够通过struts-config 的xml dtd的校验。将这些文件作为ActionServlet在web.xml中的初始化参数的config的参数值应用
例如:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-name>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml,
/WEB-INF/struts-config-1.xml,
/WEB-INF/struts-config-2.xml
</param-value>
</init-name>
<load-on-startup>2</load-on-startup>
</servlet>
动作变化
对那些不是最细微的应用而言,struts-config.xml文件会趋于变得大而笨重。许多应用可能具有数以百计的action。将这个文件结合CVS使用,那么团队中的开发人员就会访问相同的文件。
Struts 1.1 引入了对多配置文件的支持。每一个配置文件都必须是一个有效的XML 文件并且必须符合struts-config XML DTD。在可以在web.xml中将这些文件声明为ActionServlet的初始化参数config的值。你可以将这些文件指定为逗号分隔的路径列表。运行时,这些文件会在内存中合并成一个文件。如果出现重复元素,比如具有相同的name属性的两个不同的form bean 声明,则最后一个读入的配置优先。
因为只是使用多配置文件并不意味着必须要使用Struts modules。事实上,你对一个模块也可以使用多配置文件。在上面的方案中,config元素的param-name子元素的值对ActionServlet规定了默认模块的Struts 配置文件的路径。附加模块是通过config/module-name的param-name值规定的。Example 2-10 展示了一个Struts ActionServlet声明,其中具有一个默认模块和两个附加模块。默认模块是用两个配置文件,module1只使用一个配置文件,而module2使用3个配置文件。
多配置文件(多模块)
<servlet> <servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-default-config.xml,
/WEB-INF/struts-default-config-2.xml
</param-value>
</init-param>
<init-param>
<param-name>config/module1</param-name>
<param-value>
/WEB-INF/struts-module1-config.xml
</param-value>
</init-param>
<init-param>
<param-name>config/module2</param-name>
<param-value>
/WEB-INF/struts-module2-config.xml,
/WEB-INF/struts-module2-config-2.xml,
/WEB-INF/struts-module2-config-3.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
如果你是团队开发,可以考虑基于功能区域、用例、或者使用场景分解配置文件。每一个团对称员都可以集中于他们的职责领域而不用关心其他部分。