Struts 1.x 核心配置檔 `struts-config.xml` 控制整個 MVC 流程。本文系統拆解 8 大一級元素、對應二級標籤功能、三級標籤屬性完整對照表,為維護舊專案、遷移至 Struts 2/Spring MVC 提供精準參考。
八大一級元素
<data-sources> - 資料源配置
<form-beans> - 表單 Bean 定義
<global-exceptions> - 全域異常處理
<global-forwards> - 全域轉發定義
<action-mappings> - Action 映射 (核心)
<controller> - 控制器參數
<message-resources> - 國際化訊息資源
<plug-in> - 外掛模組 (如 Validator、Tiles)
關鍵三級標籤屬性詳表
1. <data-sources> → <data-source>
| 屬性 | 說明 | 預設值 |
| type | DataSource 實作類別 | org.apache.commons.dbcp.BasicDataSource |
| key | ServletContext 綁定鍵值 | Action.DATA_SOURCE_KEY |
| driverClass | JDBC 驅動類別 | - |
| url | JDBC 連線字串 | - |
| user / password | 資料庫帳密 | - |
| maxCount / minCount | 連線池最大/最小連線數 | 2 / 1 |
| autoCommit | true=每次 execute 後強制回滾(?) 實為自動提交 | false |
2. <form-beans> → <form-bean>
| 屬性 | 說明 |
| name | Form Bean 唯一識別名 (Action 參照) |
| type | ActionForm 完整類別名 |
| classname | 配置類別 (預設 org.apache.struts.config.FormBeanConfig) |
3. <global-exceptions> → <exception>
| 屬性 | 說明 |
| type | 異常類別完整名 |
| key | ResourceBundle 訊息鍵 |
| path | 異常發生時轉發路徑 |
| scope | ActionMessages 存放範圍 (request/session) |
| handler | 異常處理器類別 (預設 ExceptionHandler) |
4. <global-forwards> → <forward>
| 屬性 | 說明 |
| name | 轉發邏輯名 |
| path | 轉發/重導向 URL |
| redirect | true=重導向, false=轉發 (預設) |
| contextRelative | true=path 以 / 開頭相對 Context |
5. <action-mappings> → <action> (最關鍵)
| 屬性 | 說明 | 預設/備註 |
| path | 訪問路徑 (以 / 開頭、無副檔名) | 必填 |
| type | Action 類別完整名 | 必填 |
| name | 關聯 Form Bean 名稱 | 需對應 form-bean name |
| scope | Form Bean 範圍 (request/session) | session |
| validate | 是否調用 Form Bean validate() | true |
| input | 驗證失敗轉發頁面 | - |
| forward | 成功轉發路徑 (舊版屬性) | 建議用 子元素 |
| roles | 允許角色 (逗號分隔) | 安全角色檢查 |
| parameter | 傳遞給 Action 的參數 | 可用 mapping.getParameter() 取得 |
| unknown | true=處理所有無效 Action URL | false |
6. <controller> 屬性
| 屬性 | 說明 | 預設 |
| processorClass | 自定義 RequestProcessor 類別 | - |
| bufferSize | 檔案上傳輸入緩衝大小 | 4096 |
| contentType | 回應內容型別 | text/html |
| debug | 除錯等級 | 0 |
| locale | 是否將 Locale 存入 Session | false |
| tempDir | 檔案上傳臨時目錄 | 容器預設 |
7. <message-resources> 屬性
| 屬性 | 說明 | 預設 |
| parameter | ResourceBundle 基礎名稱 | com.demo.struts.resources.ApplicationResources |
| null | true=未找到鍵返回空字串 | false |
8. <plug-in> → <set-property>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
遷移啟示
- `action-mappings` 對應現代框架的 **路由映射** (Spring MVC `@RequestMapping`、Struts 2 `struts.xml` ``)。
- `form-beans` 對應 **表單綁定/驗證模型** (Spring `@ModelAttribute` + JSR-303、Struts 2 Action 屬性)。
- `global-forwards`/`global-exceptions` 對應 **全域異常處理/預設轉發** (Spring `@ControllerAdvice`、`HandlerExceptionResolver`)。
- `controller`/`plug-in` 對應 **框架擴展點** (Spring `HandlerInterceptor`、插件機制)。
熟悉 `struts-config.xml` 結構,能快速理解 Struts 1 架構精髓,並為現代化遷移提供精準的功能對照地圖。