在一个比较大的系统开发过程中,对于struts-config文件,我们希望能按模块分成多个配置,这样不同开发人员可以只关注自己的struts configuration文件,在调试时可以不加载其他模块的配置文件,更容易维护。
方法:
(1)按模块配置多个config文件,每个都是合法的struts configuration文件。如:struts-main.xml,struts-module1.xml,struts-module2.xml。可以把一些基本的配置信息放在一个文件中,如可以将message-resources, plug-in等都放在struts-main.xml中。其他文件中配置和module相应的action-mapping, form-beans等。在web.xml中配置ActionServlet时
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-main.xml,/WEB-INF/struts-module1.xml,/WEB-INF/struts-module2.xml</param-value>
</init-param>
改方法每个config文件中配置的path等url,如:<forward name="index" path="/index.jsp" />都是相对于application-context的。即该方法和单个struts-config.xml的配置方法完全一样,只是将一个文件分成多个文件而已。
(2)按module配置,每个module配置一个config文件,每个文件都是合法的独立的config文件。文件中的path等url都是相对于当前module的。ActionServlet配置如下:
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-default.xml</param-value>
</init-param>
<init-param>
<param-name>config/module1</param-name>
<param-value>/WEB-INF/module1.xml</param-value>
</init-param>
<init-param>
<param-name>config/module2</param-name>
<param-value>/WEB-INF/module2.xml</param-value>
</init-param>
每个module相当于一个子applition,所以config文件中的信息都是 相对于一个module而言的。
module间跳转,如module1到module2:
i. <forward name="toModule2"
contextRelative="true"
path="/module2/index.do"
redirect="true" />
contextRelative="true" 指名path是相对于application context的(不是module)。path中要加module2。
ii. 用SwithAction,配置SwithAction
访问url用 /changeModule.do?prefix=Module2&page=/index.do
prefix指名到哪个module, page指名module2中的url
用(2),我们的jsp页面要按照module存放,如APP/module1,APP/module2