- JavaWeb整合開發實例精通:Struts+Hibernate+Spring
- 閆術卓 吳峻申
- 783字
- 2018-12-31 14:45:34
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項目。
- Mastering Ext JS(Second Edition)
- Python快樂編程:人工智能深度學習基礎
- Design Principles for Process:driven Architectures Using Oracle BPM and SOA Suite 12c
- JavaScript從入門到精通(第3版)
- 正則表達式經典實例(第2版)
- Advanced Oracle PL/SQL Developer's Guide(Second Edition)
- JAVA程序設計實驗教程
- C++寶典
- Julia High Performance(Second Edition)
- WordPress Search Engine Optimization(Second Edition)
- 計算機組裝與維護(第二版)
- Python Linux系統管理與自動化運維
- Software Architecture with Python
- 從零開始學Unity游戲開發:場景+角色+腳本+交互+體驗+效果+發布
- Visual Basic語言程序設計上機指導與練習(第3版)