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

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項目。

主站蜘蛛池模板: 晴隆县| 桦甸市| 凤凰县| 鹰潭市| 文昌市| 榆林市| 罗山县| 桦甸市| 沙田区| 镇康县| 孝感市| 宝坻区| 闸北区| 临朐县| 百色市| 新巴尔虎左旗| 柳林县| 枣庄市| 西和县| 茶陵县| 肇州县| 安乡县| 西吉县| 吴旗县| 吉林省| 嫩江县| 裕民县| 罗江县| 新密市| 宁乡县| 连平县| 泾川县| 尼玛县| 岑溪市| 奉新县| 无极县| 绵阳市| 元阳县| 东至县| 时尚| 莒南县|