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

Struts 2 常見面試題彙總:架構原理、標籤庫、線程安全與驗證框架

     編輯:C++ 入門

搭建 Struts 2 專案步驟

  1. 建立 Web Project。
  2. 導入核心 JAR 包(struts2-core、xwork、ognl、freemarker 等)。
  3. `web.xml` 配置核心過濾器 `StrutsPrepareAndExecuteFilter`。
  4. 編寫 Action 類(POJO,無需實作介面)。
  5. `struts.xml` 放入 classpath(`WEB-INF/classes`),配置 Action 映射與結果視圖。
  6. 部署至 Tomcat 啟動驗證。

Struts 2 工作原理

  1. 請求到達 `StrutsPrepareAndExecuteFilter`。
  2. 根據 `struts.xml` 尋找匹配的 ActionMapping。
  3. 實例化 Action(每請求一個實例,天然線程安全)。
  4. 攔截器鏈執行(參數注入、驗證、檔案上傳等)。
  5. 執行 Action `execute()` 方法,返回結果代碼(如 "success")。
  6. 根據結果代碼轉發至對應 JSP/Freemarker 視圖。
  7. 視圖渲染回應給瀏覽器。

為何選擇 Struts 2?

  • 解決 Servlet 痛點:web.xml 大量配置、單入口 doGet/doGet 混雜、與容器強耦合(request/response)、代碼臃腫、URL 難管理、表單數據手工獲取。
  • MVC 分離:控制器、模型、視圖清晰分層。
  • 攔截器機制:橫切關注點(日誌、權限、事務)複用。
  • OGNL 表達式語言:強大的數據綁定與類型轉換。
  • 標籤庫豐富:UI、資料、控制標籤提升開發效率。
  • 易於單元測試:Action 為 POJO,無容器依賴。

Struts 2 標籤庫(5 類)

標籤庫用途
HTML生成與框架整合的表單輸入元素
Bean存取 JavaBean 屬性、定義新 Bean
Logic條件輸出、集合迴圈
Template頁面模板機制(已被 Tiles 取代)
Nested增強標籤巢狀使用能力

Action 線程安全性

Struts 2 Action 預設每請求建立新實例,天然線程安全。 但若在 Action 中宣告**類變數(static/instance field)**,多執行緒會共享,導致不安全。解決:避免可變實例變數,或使用 `ThreadLocal`。

Validator 驗證框架組成

  1. 驗證規則 Java 類
  2. 驗證規則配置檔(`validation.xml`)
  3. 資源檔(錯誤訊息國際化)
  4. JSP 自定義標籤(`` 顯示錯誤)

支援客戶端 JavaScript 驗證與伺服器端 Java 驗證雙模式。

ActionForm 役割(Struts 1 概念,Struts 2 已整合)

Struts 2 直接用 Action 屬性接收表單數據,無獨立 ActionForm。功能相當:

  1. 頁面初始化數據載入
  2. 接收用戶提交數據(自動類型轉換)
  3. 驗證數據合法性(`validate()` 方法或註解)

缺點提醒

  • 大量標籤學習曲線陡峭。
  • Action 難以單元測試(Struts 1),Struts 2 已改善。
  • XML 配置繁瑣(可用約定優於配置/註解緩解)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved