struts.jar → WEB-INF/lib/struts.tld → WEB-INF/struts-config.xml → WEB-INF/web.xml 配置 ActionServlet、標籤庫、映射 *.do。<%@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %>| 包 | 職責 |
|---|---|
| org.apache.struts.action | 核心控制器:ActionServlet、Action、ActionForm、ActionMapping、ActionForward、DynaActionForm |
| org.apache.struts.actions | 特定適配器:DispatchAction、LookupDispatchAction 等 |
| org.apache.struts.config | 配置文件映射:ActionConfig、FormBeanConfig 等 |
| org.apache.struts.util | 工具類:連接池、MessageResources、RequestUtils 等 |
| org.apache.struts.taglib | 標籤庫:Bean、HTML、Logic、Nested、Template |
| org.apache.struts.validator | 驗證框架:動態表單校驗 |

| Struts 類 | MVC 角色 |
|---|---|
| ActionServlet | Controller:接收請求、協調流程 |
| Action | Controller 部分:業務邏輯入口、返回轉發 |
| ActionForm | Model 狀態數據:封裝表單輸入 |
| ActionMapping | Controller 配置:請求到 Action 映射 |
| ActionForward | View 選擇:邏輯名到物理頁面 |
struts-config.xml:控制器配置(映射、轉發、數據源、插件)。ApplicationResources.properties:國際化資源包。struts-html.tld:HTML 表單標籤(<html:form>、<html:text> 等)。struts-bean.tld:Bean 操作標籤(<bean:write>、<bean:message>)。struts-logic.tld:邏輯控制標籤(<logic:iterate>、<logic:present>)。ActionErrors:錯誤集合。ActionError:單條錯誤,持有消息鍵映射資源文件。saveErrors(request, errors),JSP 用 <html:errors/> 顯示。| 優點 | 缺點 |
|---|---|
| 開源、社區成熟、文檔豐富 | 學習曲線陡峭,Taglib 改變編寫習慣 |
| Taglib 極大提升開發效率 | Controller 拆分為三類增加複雜度 |
| 頁面導航集中配置,維護清晰 | 早期版本 Bug 多,升級遷移成本高 |
| 與 JSTL、Hibernate 等無縫整合 | Action 單例模式易寫出線程不安全代碼 |
Struts 是基於 Web 的 MVC 經典實現,需 Servlet 2.2/JSP 1.1 容器。掌握 Struts 是 J2EE 開發者必修課,雖然現代框架(Spring MVC、Struts2)已取代,但其設計思想(前端控制器、命令模式、聲明式導航)仍具啟發價值。