大型專案多小組並行開發,單一 struts-config.xml 易產生版本衝突。Struts 支援多模組配置,各小組維護獨立配置檔。
<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/conf/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/admin</param-name>
<param-value>/WEB-INF/conf/struts-config-admin.xml</param-value>
</init-param>
<init-param><param-name>debug</param-name><param-value>3</param-value></init-param>
<init-param><param-name>detail</param-name><param-value>3</param-value></init-param>
<load-on-startup>0</load-on-startup>
</servlet>
config/admin 對應 struts-config-admin.xml,後綴必須一致。ActionServlet 依 URL 前綴判斷模組。
請求 https://localhost:8080/strutsmodel/admin/admin.do:
strutsmodel:Context Pathadmin:模組前綴admin.do:Action 路徑<action path="/admin" type="org.zhoudq.webapp.action.AdminAction"> ... </action>
模組內所有 path 自動加上模組前綴,故完整路徑為 /admin/admin。模組內 forward 查找相對於該模組配置檔,而非全域 Context。
在 struts-config-admin.xml 定義全域 forward:
<forward name="switchModuleToFront"
contextRelative="true"
path="/front/login.do"
redirect="true"/>
或在 Action 內部 forward 設定 contextRelative="true"。
配置內建 SwitchAction:
<action path="/switch" type="org.apache.struts.actions.SwitchAction"/>
請求參數:
prefix:模組前綴 (如 /admin)page:目標資源路徑 (如 /admin.do)範例 URL:https://localhost:8080/strutsmodel/switch.do?prefix=/admin&page=/admin.do
模組化解決團隊協作配置衝突,SwitchAction 提供優雅跨模組導航。靈活運用可大幅提升大型專案維護性。