2001 年 5 月發布,引入 MVC 模式分離視圖 (JSP) 與業務邏輯,一度成為 Web 應用事實標準。優勢:低風險(人才易招)、成熟穩定、XML 配置替代硬編碼路徑。
web.xml 配置攔截所有 *.do 請求。RequestProcessor 初始化映射 → 轉發至後端 Action → Action 返回 ActionForward → 轉發/重定向至視圖 JSP。struts-config.xml 維護邏輯名稱 → 實現類映射,修改路徑無需改代碼重編譯,理念延續至今(Spring MVC、Struts 2 均沿用)。
org.apache.struts.action.Action,覆寫 execute(mapping, form, request, response)。DispatchAction、DynaValidationAction 等變體。RequestProcessor.processActionCreate() 雙重檢查鎖緩存實例於 HashMap(Key=類名)。<action> 元素 roles 屬性指定訪問角色(逗號分隔)。RequestProcessor.processRoles() 調用 request.isUserInRole() 校驗,失敗轉發至 input 指定頁面。session(默認)、request。ActionForm 實例。reset() 初始化字段。setter 映射)。validate="true" 且 name 匹配,調用 validate()。input;成功 → 調用 Action.execute()。session 作用域下,同一實例服務多請求,reset() 清理殘留數據至關重要。request 作用域每請求新建實例,reset() 相對次要。validator.xml 定義規則,validation-rules.xml 映射實現,自動生成 JavaScript 客戶端驗證。評價:生成代碼冗余、彈窗醜陋,實際項目多改用服務端驗證(ActionForm.validate() 或 Action.saveErrors())配合友好提示。java.util.Locale + .properties 訊息鍵值對。JSP 使用 <bean:message key="..."/> 取值。不同語言對應不同 properties 文件,需用 native2ascii 轉 Unicode 編碼。Struts 1 以前端控制器 + XML 配置 + ActionForm 確立了 Java Web MVC 基礎範式。其單例 Action、手動線程安全、驗證框架生成 JS 等設計在當時創新,但也暴露出局限,直接催生了 Struts 2、Spring MVC 等新一代框架。理解其核心模式(Front Controller、DTO、Declaration Configuration)有助於掌握現代框架本質。