struts多模块并行开发
并行开发最大的问题就是资源访问冲突,struts-config.xml是最重要的一个资源。我们一般的配置如下:
......
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
......
并行开发体现在软件工程中就是模块的并行开发。多个模块如果都要用到同一个struts-config.xml,这是冲突就发生了。
不难发现 在web.xml中定义是用参数的形式去映射的,于是我们可以配置多个这样的参数,对应每个并行的模块的struts配置文件。
......
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/m1</param-name>
<param-value>/WEB-INF/struts-config-m1.xml</param-value>
</init-param>
......
也可以这样,用逗号分隔每个模块的配置文件
......
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-m1.xml,...</param-value>
</init-param>
......
在用到配置文件中的转发映射可以用struts内建的SwitchAction来跨模块配置跳转。
...
<action-mappings>
<action
path="/modJump"
type="org.apache.struts.actions.SwitchAction"/>
....
</action-mapping>
...
如果觉得这样使用起不方便也可以在转发时限制地加上模块名,如下
...
<action-mappings>
<action ...>
<forward name="browse" contextRelative="true"<!-- 默认为true-->
path="/mod/XXX.do" redirect="true"<!-- 是否重定向-->
/>
</action>
....
</action-mapping>
...
如果要在页面上使用就可以用<html:link>标签来完成
<html:link module="/mode" path="xxx.do"/>
struts多模块并行开发的配置就如上。如果你还有更好的方法,并愿意与我分享,我很高兴收到你的e-mail。