什么是Action?
和常規的web 應用相比,Struts Action 類工作起來就象一個小型的servlet。在大多數Java
應用中,諸如訪問業務層的任務、錯誤處理等任務均是由servlet 承擔的。在一個 Struts 應
用中,servlet 扮演著一個分派器的角色。而Action 對象則干實際的工作。象 servlets 一樣,
Action 對象是多線程的。每個應用只需要一個Action 類的實例。
Action做些什么?
一個典型的Action 的職責通常是:
?? ■校驗前提條件或者聲明
?? ■調用需要的業務邏輯方法
?? ■檢測其它處理錯誤
?? ■將控制路由到相關視圖
檢驗輸入: Action 需要做的就是確認ActionForm 是否是需要的類型。
調用邏輯業務:
Action 類是HTTP 與應用系統中其它部分之間的適配器。最重要的是要避免將業務邏輯放入
Action 之中。Action 類應該只是簡單地收集業務方法需要的數據并傳遞它到具體的業務對
象。如果你同時在編寫業務類和Action 類,可能會受到要將它們編寫在一起的誘惑。一定
要抵擋這種誘惑,并且將業務方法放入Action 可調用的單獨的類之中。Java 虛擬機(JVM)
針對這種方法調用作了優化;性能損失可以忽略不計。
同時你也得到了一些設計上的優勢
Action檢測錯誤:
Struts具有一個設計良好的錯誤處理系統,允許你可以:
??■ 同時截獲幾個錯誤
??■ 在請求中傳遞錯誤數據包
??■ 顯示本地化信息
這個處理流程涉及到兩個對象 (ActionErrors 和 ActionError) 和一個注冊錯誤的工
具方法(saveErrors) 。其它兩個對象 (MessageResources 和 一個定制標簽)則用來顯
示錯誤信息
注冊錯誤
總體流程歸結為:
??1 創建一個空的ActionErrors 實例
??2 在錯誤發生時,為錯誤信息添加關鍵字;
??3 檢查是否添加了某些信息
??4 保存ActionErrors 集合對象到請求中
??5 ?轉發控制到錯誤頁面以顯示信息
??6? 否則,正常繼續
例如


















