最近講了struts 寫點理解所有的請求都提交給ActionServlet來處理要運行struts就是在程序啟動時先要加載ActionServlet類而加載這個類是依靠對webxml的解析ActionServlet要啟動可以通過兩種條件
ActionServlet的加載優先級—— 在webxml中有這樣一句話<loadonstartup></loadonstartup> 其中代表著一起動就加載!
當用戶請求時加載ActionServlet也就是說啟動優先級不是最高的我試過第一次運行會報錯誤但後面就正常了 所以這種是不可取的也告訴大家以後遇到加載struts出問題時不妨先看看它的加載優先級
ActionServlet是一個FrontController它是一個標准的Servlet它將request轉發給RequestProcessor來處理
ActionMapping是ActionConfig的子類實質上是對strutsconfigxml的一個映射從中可以取得所有的配置信息
RequestProcessor根據提交過來的url如*do從ActionMapping 中得到相應的ActionForn和Action然後將request的參數對應到ActionForm中進行form驗證如果驗證通過則調用Action的execute()方法來執行Action最終返回ActionFoward
ActionFoward是對mapping中一個foward的包裝對應於一個url
ActionForm使用了ViewHelper模式是對HTML中form的一個封裝其中包含有validate方法用於驗證form數據的有效性ActionForm是一個符合JavaBean規范的類所有的屬性都應滿足get和set對應對於一些復雜的系統還可以采用DynaActionForm來構造動態的Form即通過預制參數來生成Form這樣可以更靈活的擴展程序
ActionErrors是對錯誤信息的包裝一旦在執行action或者formvalidate中出現異常即可產生一個ActionError並最終加入到ActionErrors在Form驗證的過程中如果有Error發生則會將頁面重新導向至輸入頁並提示錯誤
Action是用於執行業務邏輯的RequsestHandler每個Action都只建立一個instanceAction不是線程安全的所以不應該在Action中訪問特定資源一般來說應改使用 Business Delegate 模式來對Business tier進行訪問以解除耦合
Struts提供了多種Action供選擇使用普通的Action只能通過調用execute執行一項任務而DispatchAction可以根據配置參數執行而不是僅進入execute()函數這樣可以執行多種任務如insertupdate等LookupDispatchAction可以根據提交表單按鈕的名稱來執行函數
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29163.html