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

Struts 2 學習指南:核心變化、標簽策略與項目實戰

     編輯:Java 相關知識

Struts 2 並非 Struts 1 升級,而是基於 WebWork 2 重構的全新框架。本文提煉學習重點:只關注 5 個核心面向,拒絕標簽庫全量學習陷阱,附遷移對比、環境搭建與登錄項目實戰步驟。

學習策略:以不變應萬變

Struts 更新快,若標簽、配置、Action 全學,永無止境。實際開發中:

  • HTML 標簽優先:button、input、select、table、form 等純顯示元素,瀏覽器原生支持,堅決不用 Struts 標簽替代。
  • 只學邏輯標簽:遍歷、判斷、比較等需後台邏輯的標簽(<s:iterator>、<s:if> 等)。
  • 數據填充用標簽:向視圖注入數據時使用 Struts 標簽。

遵循此原則,Struts 1→2 遷移頁面幾乎無需改動;即便 Struts 3 出來,HTML 部分亦不變。

五大核心學習面向

  1. 標簽庫:只掌握帶邏輯功能的標簽,學習量減 80%。
  2. Action 類:框架核心,連接各層。有 Struts 1 基礎極易上手(POJO 化、無 FormBean)。
  3. struts.xml 配置:控制器核心。掌握 1.x 的 <action>、<result>、全局轉發,2.x 配置一看即懂。
  4. Spring 整合:Struts 2 內置 IoC 但官方建議仍用 Spring,Spring 必須精通。
  5. Hibernate 整合:SSH 鐵三角,Hibernate 配置極其穩定,不隨 Struts 變化。

Struts 2 vs Struts 1 關鍵差異速查

維度Struts 1Struts 2
Action 類型繼承抽象基類實現接口或純 POJO(有 execute 方法即可)
線程模型單例,需線程安全每請求一實例,天然線程安全
Servlet 依賴強依賴(execute 參數含 request/response)無依賴,可脫容器測試;需時可訪問
測試性難,需 StrutsTestCase 模擬容器易,直接實例化、設置屬性、調用方法
輸入捕獲ActionForm 必繼承基類,常產生冗余類Action 屬性直接接收,消除 FormBean;兼容 Form 模式
表達式語言JSTL EL,集合/索引支持弱OGNL,強大靈活,支持圖導航
值綁定視圖標準 JSP 機制綁定對象ValueStack,標簽訪問值無需綁定,支持同名不同類型屬性復用視圖
類型轉換Commons-Beanutils,每類一轉換器OGNL 內置常用轉換器
驗證validate() 或 Commons Validatorvalidate() + XWork 驗證框架,支持鏈式驗證子屬性
Action 執行控制模塊級 RequestProcessor,生命周期固定攔截器棧,每 Action 可定制生命周期

項目實戰:Struts 2 登錄模塊

核心依賴包

  • commons-logging-1.0.4.jar
  • freemarker-2.3.8.jar(UI 標簽模板)
  • ognl-2.6.11.jar
  • struts2-core-2.0.11.jar
  • xwork-2.0.4.jar

開發步驟

  1. 導入核心包到 WEB-INF/lib
  2. web.xml 配置 FilterDispatcher(核心控制器)
  3. 編寫前台頁面(login.jsp)
  4. 開發 DAO 層
  5. 開發 Action 類
  6. 創建 struts.xml 配置 Action 映射與結果視圖

開發環境搭建清單

  1. JDK(綠色版)+ 環境變量
  2. Tomcat(綠色版)+ 環境變量
  3. Eclipse/MyEclipse(前者需額外裝 Tomcat/Lomboz 插件)
  4. 關鍵:MyEclipse 內置 Struts 包不可信,專案 WEB-INF/lib 必須顯式放入所需 JAR

總結

Struts 2 通過 POJO Action、攔截器、OGNL、ValueStack 徹底解決 Struts 1 的痛點。學習時堅持「HTML 歸 HTML,邏輯歸標簽」,聚焦五大核心面向,配合一個登錄項目實戰,即可快速掌握並應對後續版本演進。

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