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

Struts 1.x 框架架構與標籤庫完整參考手冊

     編輯:Java 程式設計入門

序言

本文系統整理 Struts 1.x 整體架構、核心組件(ActionServlet、ActionMapping、ActionForm、Action、ActionForward)、配置檔詳解,以及四大標籤庫的完整屬性與用法,適合作為開發階段的速查手冊。

1. Struts 壓縮包結構

  • lib/:struts.jar、JDBC 2.0 擴充包、*.tld 標籤描述檔 → 需複製至 WEB-INF/lib
  • webapps/:struts-blank.war(空白專案)、struts-example.war(功能示範)、struts-documentation.war(文件)、struts-upload.war(檔案上傳範例)等

2. MVC 架構在 Struts 中的對應

層級Struts 組件說明
ModelActionForm Bean、業務邏輯 Bean/EJB內部狀態與改變狀態的操作
ViewJSP + Struts 標籤庫支援國際化、動態模板
ControllerActionServlet + ActionMapping攔截請求、委派 Action、管理轉向

3. 核心組件詳細說明

3.1 struts-config.xml 配置要點

  • <form-beans>:定義 ActionForm 名稱、類別、作用域
  • <global-forwards>:全域邏輯轉向名稱對應路徑
  • <action-mappings>:核心映射,屬性包含 path、type、name、scope、input、validate、巢狀 <forward> 定義區域轉向
  • <data-sources>:JDBC 連線池配置(1.1 版後建議使用 JNDI DataSource)

3.2 ActionServlet:核心控制器

  • 初始化參數:config、debug、validate、multipartClass 等
  • 請求處理流程:攔截 → 映射 Action → 建立/取得 ActionForm → 填充屬性 → validate() → 呼叫 Action.execute() → 依 ActionForward 轉向
  • 提供動態增刪 Mapping/FormBean/Forward/DataSource 方法

3.3 ActionMapping、ActionForward、ActionErrors

  • ActionMapping.findForward() 取得區域/全域轉向
  • ActionForward 三種建構子支援路徑、重導向
  • ActionErrors 收集 ActionError,支援訊息鍵值、參數替換、全域/欄位級錯誤

3.4 Action 與 ActionForm 最佳實踐

  • Action 必須執行緒安全:不儲存請求狀態於實例/靜態變數,共享資源需同步
  • ActionForm 僅負責表單資料承載與基本格式驗證,業務規則驗證放在 Action 或 Service 層
  • reset() 於每次請求前清空屬性,避免殘留資料

4. 四大標籤庫完整屬性速查

4.1 Bean 標籤庫 (struts-bean.tld)

標籤用途關鍵屬性
<bean:define>定義/複製 Bean、屬性至腳本變數id, name, property, value, scope, toScope
<bean:cookie/header/parameter/include/resource>從 Cookie、Header、參數、內含資源建立腳本變數id, name, value, multiple 等
<bean:write>輸出 Bean 屬性,支援 HTML 過濾name, property, scope, filter, ignore
<bean:message>國際化訊息輸出,支援 arg0~arg3 參數替換key, locale, bundle, arg0~arg3

4.2 Logic 標籤庫 (struts-logic.tld)

分類標籤功能
條件比較<logic:equal/notEqual/greaterThan/lessThan/greaterEqual/lessEqual>Cookie/Header/參數/Bean屬性與常數比較
存在性檢查<logic:present/notPresent>檢查 Cookie/Header/參數/Bean/屬性/角色/用戶是否存在
模板匹配<logic:match/notMatch>判斷值是否為常數子字串,支援 location 索引位置
迭代<logic:iterate>遍歷 Collection/Map/Iterator/陣列,支援 offset、length、indexed
轉向/重導向<logic:forward>, <logic:redirect>全域轉向、帶參數重導向

4.3 HTML 標籤庫 (struts-html.tld)

  • 表單標籤:<html:form> 綁定 ActionForm,屬性 action、method、focus、onsubmit 等
  • 輸入控制項:text、password、textarea、checkbox、multibox、radio、select/option、file、hidden、submit、reset、button、cancel,均對應 ActionForm 屬性,支援 JavaScript 事件屬性
  • 錯誤顯示:<html:errors> 讀取 ActionErrors,支援 property 過濾特定欄位錯誤
  • 其他:html、base、link、rewrite、img

4.4 Tiles 模板標籤庫

  • <tiles:insert definition="..."/> 插入版面定義
  • <tiles:put name="..." value="..."/> 定義區塊內容
  • <tiles:get name="..."/> 在版面 JSP 中取出區塊
  • 支援 controllerClass 注入呈現邏輯,結合角色權限控制

5. 目錄結構建議

/WEB-INF
  /lib           struts.jar, commons-*.jar
  /classes       編譯後 .class、.properties
  /tld           標籤描述檔(可選,亦可放在 jar 內)
  struts-config.xml
  web.xml
/pages           JSP 檔案

總結

Struts 1.x 以集中式 struts-config.xml 管理導航、表單、轉向,標籤庫大幅減少 Scriptlet,雖已被 Spring MVC 等取代,但在存量系統維護中仍具參考價值。掌握其核心組件生命週期與標籤屬性,能有效提升除錯與重構效率。

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