Struts 作為經典 MVC 框架,將 Web 應用拆解為 Model、View、Controller 三層,透過 ActionServlet 統一入口、struts-config.xml 宣告式映射,實現業務邏輯與展示層解耦。本文從 Model 1/2 差異切入,詳細剖析 Struts 核心組件、處理流程、開發步驟與兩大配置檔要點。
Servlet 控制流程、JavaBean/EJB 封裝業務、JSP 專注渲染,組件化利於大型系統維護。| 層級 | Struts 組件 | 職責 |
|---|---|---|
| Controller | ActionServlet + ActionMapping | 接收請求、映射至 Action、管理流程 |
| Model | Action + ActionForm + 業務 Bean/EJB | Action 處理邏輯、ActionForm 封裝表單資料 |
| View | JSP + Struts Tag Library | 自定義標籤綁定 ActionForm、模板化輸出 |


ActionMappingActionForm 對應畫面欄位Action 呼叫業務邏輯struts-config.xml、web.xml<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<form-beans>
<form-bean name="loginForm" type="com.example.LoginForm"/>
</form-beans>
<action-mappings>
<action path="/login"
type="com.example.LoginAction"
name="loginForm"
input="/login.jsp"
scope="request">
<forward name="success" path="/welcome.jsp"/>
<forward name="failure" path="/login.jsp"/>
</action>
</action-mappings>
DelegatingActionProxy 橋接 Struts Action。