MVC(Model-View-Controller)是企業級應用開發的經典設計模式,亦稱 Model 2。其核心在於將商業邏輯(控制)、資料(模型)與介面顯示(視圖)三大關注點徹底分離:
早期 ASP、PHP、JSP(Model 1)開發將資料庫存取、業務邏輯與 HTML 輸出混雜在單一頁面中,導致:
MVC 模式透過 View 僅從 Controller 獲取已處理資料並渲染,大幅降低了頁面與業務邏輯的耦合,保護了開發成果不被前端調整破壞。
主流方案包含:
Struts 作為 Apache 基金會旗下成熟框架,憑藉豐富的標籤庫、驗證機制與靈活的配置,成為早期 J2EE 專案的首選。
相較 1.0 版,1.1 最大亮點在於表單驗證機制全面改進:驗證邏輯從 Action 類別移至 validation.xml 宣告式配置,大幅提升複用性與可維護性。
Action 扮演 HTTP 請求與業務邏輯之間的橋樑。其核心職責:
ActionForward 導向下一個視圖ActionForm 是與一個或多個 ActionMapping 關聯的 JavaBean。Struts 會在調用 Action 的 execute() 方法前,自動將請求參數填充至 Form Bean 屬性。1.1 版後,主要驗證工作轉移至 validation.xml,ActionForm 更專注於資料封裝與表單回寫。
在 struts-config.xml 中定義:
<action-mappings>
<action path="/usereg"
type="com.bingo.finance.action.UseregAction"
name="useregForm"
scope="request"
validate="true"
input="/usereg.jsp">
<forward name="success" path="/msg.jsp"/>
</action>
</action-mappings>
https://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b1/jakarta-struts-1.1-b1.zip
將 struts.jar 複製至 $TOMCAT_HOME/common/lib 或專案 WEB-INF/lib 目錄。
<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/struts-config.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>2</load-on-startup>
</servlet>
<!-- 標籤庫聲明 -->
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"https://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<form-beans>
<form-bean name="useregForm" type="com.bingo.finance.action.UserForm"/>
</form-beans>
<global-forwards>
<forward name="error" path="/error.jsp"/>
</global-forwards>
<action-mappings>
<action path="/usereg"
type="com.bingo.finance.action.UseregAction"
name="useregForm"
scope="request"
validate="true"
input="/usereg.jsp">
<forward name="success" path="/msg.jsp"/>
</action>
</action-mappings>
<message-resources parameter="com.bingo.finance.common.DisplayMsg"/>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathname" value="/WEB-INF/validator-rules.xml"/>
<set-property property="pathname" value="/WEB-INF/validation.xml"/>
</plug-in>
</struts-config>
<form-validation>
<formset>
<form name="useregForm">
<field property="username" depends="required,mask,minlength,maxlength">
<arg0 key="common_username"/>
</field>
</form>
</formset>
</form-validation>
Struts 1.1 透過宣告式驗證、成熟的 MVC 架構與豐富的標籤庫,為早期 J2EE 專案提供了標準化的開發骨架。雖然現代開發已轉向 Spring MVC、Spring Boot 等更輕量級框架,但理解 Struts 的核心設計思想——請求路由、資料綁定、視圖解析——對於掌握後續框架原理仍具備重要參考價值。