首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Struts 1.1 核心架構與實戰入門

     編輯:Java 程式設計入門

MVC 設計模式回顧

MVC(Model-View-Controller)是企業級應用開發的經典設計模式,亦稱 Model 2。其核心在於將商業邏輯(控制)、資料(模型)與介面顯示(視圖)三大關注點徹底分離:

  • Model:封裝資料存取與業務規則,對應 JavaBean 或 EJB。
  • View:負責資料呈現,通常為 JSP 頁面,僅包含極少邏輯程式碼。
  • Controller:接收請求、協調 Model 與 View,對應 Struts 中的 ActionServlet 與 Action 類別。

傳統 Model 1 的痛點

早期 ASP、PHP、JSP(Model 1)開發將資料庫存取、業務邏輯與 HTML 輸出混雜在單一頁面中,導致:

  1. 程式碼缺乏層次,HTML 與 Script 相互嵌套,維護困難。
  2. 美工修改頁面極易破壞後端邏輯,頻繁引發返工。
  3. 團隊協作效率低,前後端職責界線模糊。

MVC 模式透過 View 僅從 Controller 獲取已處理資料並渲染,大幅降低了頁面與業務邏輯的耦合,保護了開發成果不被前端調整破壞。

Java Web 開發的 MVC 實現選擇

主流方案包含:

  1. JSP + Servlet + JavaBean (EJB)
  2. JSP + JavaBean (Controller) + JavaBean (EJB) (Model)
  3. Turbine / Velocity 等 TDK 框架
  4. XSP
  5. JSP + Struts + JavaBean (EJB) —— 本文重點

Struts 作為 Apache 基金會旗下成熟框架,憑藉豐富的標籤庫、驗證機制與靈活的配置,成為早期 J2EE 專案的首選。

Struts 1.1 關鍵新特性

相較 1.0 版,1.1 最大亮點在於表單驗證機制全面改進:驗證邏輯從 Action 類別移至 validation.xml 宣告式配置,大幅提升複用性與可維護性。

核心組件深度解析

Action:請求與業務邏輯的適配器

Action 扮演 HTTP 請求與業務邏輯之間的橋樑。其核心職責:

  • 從表單提取資料
  • 委派業務邏輯元件執行運算
  • 根據執行結果返回對應的 ActionForward 導向下一個視圖

ActionForm:資料封裝與驗證載體

ActionForm 是與一個或多個 ActionMapping 關聯的 JavaBean。Struts 會在調用 Action 的 execute() 方法前,自動將請求參數填充至 Form Bean 屬性。1.1 版後,主要驗證工作轉移至 validation.xml,ActionForm 更專注於資料封裝與表單回寫。

ActionMapping 與 ActionForward:請求路由配置

在 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>
  • ActionMapping:描述 Action 的 URL、實現類別、關聯 Form Bean、資料作用域、是否驗證、失敗導向頁面。
  • ActionForward:Action 執行完成後的導向目的地,由 Action 返回告知框架下一步流向。

Struts 1.1 執行環境搭建(以 Tomcat 4.0+ 為例)

1. 獲取發布包

https://jakarta.apache.org/builds/jakarta-struts/release/v1.1-b1/jakarta-struts-1.1-b1.zip

2. 部署核心庫

將 struts.jar 複製至 $TOMCAT_HOME/common/lib 或專案 WEB-INF/lib 目錄。

3. 配置 web.xml

<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>

4. 配置 struts-config.xml 範例

<?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>

5. 配置 validation.xml 範例

<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 的核心設計思想——請求路由、資料綁定、視圖解析——對於掌握後續框架原理仍具備重要參考價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved