官术网_书友最值得收藏!

1.3 為什么要用Struts 2

在上一節中對Struts 2的各個組成部分進行了大致的說明,也許有些讀者對Action、Filter這些技術名詞還只是一些模糊的概念,也不明白為什么Struts 2需要這些作為它的一部分。因此有必要對Struts 2在Web項目中進行操作的整體流程詳細說明。如圖1.3所示是Struts 2的整體結構圖。

圖1.3 Struts 2整體結構圖

分析圖1.3的工作流程:

(1)右上角的HTTP請求發出后,如果在Context中有對象,先通過過濾器ActionContextCleanUp清理Contex對象。

(2)然后判斷如果項目中使用了像SiteMesh這樣的框架,那必須先通過這樣的過濾器,然后再使用ActionMapper進行調度。

(3)在配置文件struts.xml中尋找相應的URL控制,通過ActionInvocation找到Action,如果被找到的Action有攔截器配置,則在Action的前后執行攔截器。

(4)Action主要功能則是調用業務邏輯類,對業務邏輯進行處理之后,則返回一個Result,在struts.xml中根據相應定義的Result導航目標視圖,產生Response返回到相應的目標視圖頁面。如果還有過濾器設置,則還需要進行過濾器的執行和控制。

通過以上的說明,可知Struts 2還是和基本的MVC模式概念有些區別,在"VC"(視圖和控制)部分,調用時都是通過相應的過濾器或攔截器組件進行處理,也就是比起傳統的MVC模式,它提供了很多附加的操作處理,但是這些操作處理原先在MVC中都是一起執行的,現在只不過把他們和核心的流程分離開。

因此不僅僅是MVC的分離,甚至某些核心和非核心的控制處理也分開了,這更加體現了松耦合的開發理念。

使用Struts 2的目標其實已經很清楚了,面對以前非結構化或比較混亂的項目開發框架,Struts 2可以讓項目結構化,而且對于很多新技術尤其是視圖技術提供了很好的支持。對于開發人員,在Struts 2中開發自己新的符合業務邏輯的組件自由度更高,而且也不會使原有結構發生改變或混亂。

在Struts 2誕生之前,同類型中比較知名的基于MVC模式的Web項目開發框架有WebWork、Tapestry、JSF、SpringMVC。Struts 2誕生后,WebWork已經和Struts合并,剩下的還有其他三個開發框架。下面對其一一進行介紹,然后將它們和Struts 2相比較,就能明白這些框架的技術優勢和劣勢分別在哪里。

1.3.1 Tapestry優劣點

該框架是基于組件開發的框架。它有以下幾點優勢:

●非常高的代碼復用性。

●將開發者從煩瑣的JSP代碼中解脫出來,取而代之的是真正面向對象的方法,而不是URL解析。

●對國際化的支持。

●精確地錯誤定位,將錯誤定位到源程序中的行,取代了JSP中莫名奇妙地錯誤提示。缺點有以下幾點:

●學習文檔都是很概念化的,沒有什么實用性。

●學習曲線很陡峭,即入門者開始學習時很難理解和掌握。

●產品發布周期也很長,要很長時間才會把開發者提出的技術缺陷在下一版本中解決。

●幾乎沒有什么成功的Web項目開發示例。

●IDE(集成開發環境)對其的支持很弱。在開發工具中使用它進行Web項目開發,幾乎沒有很好的便捷開發方法。

現在的Web項目開發中,都很重視快速開發理念,而Tapestry由于以上的缺點往往拖延了開發進度,因此幾乎沒有IT公司會使用它開發Web項目。

主站蜘蛛池模板: 海宁市| 鹿邑县| 北辰区| 两当县| 当阳市| 琼中| 通渭县| 甘南县| 托克逊县| 繁昌县| 镇平县| 昌都县| 青神县| 迁西县| 汤原县| 奉贤区| 江山市| 民乐县| 红原县| 台南市| 江安县| 孟津县| 淮南市| 宾阳县| 金乡县| 隆化县| 克拉玛依市| 嵊泗县| 左权县| 边坝县| 汤原县| 吴川市| 绥棱县| 晋州市| 湘阴县| 宝鸡市| 通榆县| 湄潭县| 桐柏县| 西吉县| 句容市|