Struts2概念解析

有些時間,我總是忘記爲什麼有struts2?  struts2到底是個什麼東西?(雖然平時寫很多代碼,但是偶爾會冒出這個問題,呵呵,做個記錄)


1.Struts2是什麼?

java web應用框架,封裝MVC框架的思想和servlet

2.爲什麼會有Struts?

早期大家都用MVC來使項目的流程更加清晰,更加易於維護,但是各個公司對MVC的理解不同。導致許多爭議,但都說自己的纔是真正的MVC。

所以sun公司就制定了一個規範來解決這個問題。那就是定義了Struts2框架。(當然不僅僅是這個方面)

(打個比方:你們公司老闆不固定上下班。有一天老闆說早上9點上班,5點下班,做個規定。當然做這個規定給公司會帶來很多好處)

4.Struts2運行原理?

上一個官方原理圖


運行原理:

一個請求在Struts2框架中的處理大概分爲以下幾個步驟
1 客戶端初始化一個指向Servlet容器(例如Tomcat)的請求
2 這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,
這個過濾器對於Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin)
3 接着FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請是否需要調用某個Action
4 如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy
5 ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類
6 ActionProxy創建一個ActionInvocation的實例。
7 ActionInvocation實例使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。
8 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是
(但不總是,也可 能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。
在表示的過程中可以使用Struts2 框架中繼承的標籤。在這個過程中需要涉及到ActionMapper
在上述過程中所有的對象(Action,Results,Interceptors,等)都是通過ObjectFactory來創建的。

更好明白原理請看struts2入門案例:http://blog.csdn.net/todaymz/article/details/8743712

5.Struts2優缺點?

(網絡蒐集,未證實)

優點:
         1.Struts2基於MVC架構,框架結構清晰,開發流程一目瞭然,開發人員可以很好的掌控開發的過程。
         2.使用OGNL進行參數傳遞
         3.強大的攔截器
         4.易於測試
         5.易於擴展的插件機制
         6.模塊化
         7.全局結果與聲明式異常
缺點: 

           對Servlet的依賴性過強
           對Action執行的控制困難
           對事件支持不夠
           struts2對ajax的支持還不太理想。

6.Struts2重要知識?

 OGNL
 XWOrk
 ValueStack
 支持EL
 Action核心
 Result基本原理
 Struts核心標記庫
 攔截器
 非UI標記
 資源文件與國際化

7.Struts2和Struts1比較?

Struts2和Struts1都是MVC框架,Struts1對service依賴更大,Struts2是Webwork2基礎上面發展而來的,並非Struts1的升級。

下面給點阿帕奇公司公佈的比較文檔:

http://www.cnblogs.com/tongzhiyong/archive/2007/02/24/655178.aspx

----------------------我是分割線---------------------------


轉載請說明出處:http://blog.csdn.net/todaymz/article/details/8744038



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章