對struts2.0的學習

struts首先是MVC框架
MVC是一種設計模式
將應用程序分成了視圖、模型、控制器三部分,使代碼邏輯清晰,同時提高移植性
M與V之間--觀察者模式
V與C之間--策略模式
 
MVC的工作流程
請求----控制器調用模型處理,返回數據-----控制器用相應的視圖格式化模型返回的數據完成相應
 
Struts2在以上流程中解決了三個問題:
1.      控制器如何根據用戶的請求決定調用哪個模型(具體是模型中的Action組件)進行處理
2.      如何在業務邏輯處理器與serv let API 分離的情況下使處理器獲得請求參數,並得以執行
3.      如何將處理後返回的數據傳給相應的視圖生成動態網頁響應給用戶
 
結合Struts的請求流程加以說明
客戶端請求----經三個過濾器(ActionContextCleanUp,其他過濾器,到FilterDispatcher核心控制器)
FilterDispatcher詢問ActionMapper是否需要調用Action來處理,如果ActionMapper決定調用,FilterDispatcher就把對請求的處理交給了ActionProxy
ActionProxy通過Configuration Manager 詢問框架的配置文件,找到需要調用的Action類
ActionProxy創建一個ActionInvocation實例,同時ActionInvocation通過代理模式調用Action,但在調用之前ActionInvocation會根據配置加載Action相關的攔截器,每執行完一個
攔截器,會調用invocation的invoke方法,把請求傳給下個Interceptor,所有的Interceptor執行完以後,會執行Action
Action執行根據後,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果
這個返回結果可能是一個 需要表示爲JSP或FreeMarker的模板,或者是另一個Action鏈
如果是前者,表示的過程中可以使用struts2的標籤,生成動態網頁後返回給用戶
如果是後者,則再把上述過程執行一遍

struts同時實現了struts1的actionForm的功能:初始化數據,封裝數據,驗證數據格式
struts2.0的解決方式是:通過action實現preparable接口,實現對數據的初始化;
					繼承actionSupport類,重寫validate(),顯示數據的驗證,在aciton配置響應的屬性,和對應的getter和setter方法,實現數據封裝,struts2.0通過ognl實現效果比acitonFrom更靈活
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章