天天看點

Webwork 學習之路(一)Webwork與 Struct 的前世今生

 struts 1是全世界第一個釋出的mvc架構,它由craig mcclanahan在2001年釋出,該架構一經推出,就得到了世界上java web開發者的擁護,經過長達6年時間的錘煉,struts 1架構更加成熟、穩定,性能也有了很好的保證。    

    到目前為止,struts 1依然是世界上使用最廣泛的mvc架構。目前,基于web的mvc架構非常多,發展也很快,每隔一段時間就有一個新的mvc架構釋出。

    雖然struts 2号稱是一個全新的架構,但這僅僅是相對struts 1而言。struts 2與 struts 1相比,确實有很多革命性的改進,但它并不是新釋出的新架構,而是在另一個赫赫有名的架構:webwork基礎上發展起來的。從某種程度上來講,strut2沒有繼承struts 1的血統,而是繼承了webwork的血統。或者說,webwork衍生出了struts 2,而不是struts 1衍生了struts 2。因為struts 2是webwork的更新,而不是一個全新的架構,是以穩定性、性能等各方面都有很好的保證;而且吸收了struts 1和webwork兩者的優勢。  

    struts 2以webwork為核心,采用攔截器的機制來處理使用者的請求,這樣的設計也使得業務邏輯控制器能夠與servlet api完全脫離開。在很多方面struts僅僅是改變了webwork下的名稱。struts2對應的有自己的标簽,并且功能強大。webwork也有自己的标簽。struts 2和webwork成員名稱(命名上存在的改變)的對應表:

Webwork 學習之路(一)Webwork與 Struct 的前世今生

除此之外,struts 2也删除了webwork中少量特性:

aroundinterceptor:struts 2不再支援webwork中的aroundinterceptor。如果應用程式中需要使用aroundinterceptor,則應該自己手動導入webwork中的aroundinterceptor類。

富文本編輯器标簽:struts 2不再支援webwork的富文本編輯器,如果應用中需要使用富文本編輯器,則應該使用dojo的富文本編輯器。

ioc容器支援:struts 2不再支援内建的ioc容器,而改為全面支援spring的ioc容器,以spring的ioc容器作為預設的object工廠。

webwork 架構流轉圖:

Webwork 學習之路(一)Webwork與 Struct 的前世今生

webwork的網站上提供了一個完整的webwork架構圖。它描述了從用戶端的一次請求到最後伺服器端響應的的整個執行過程。架構圖如下:

此架構圖一個分為五個部分,其中五個部分分别有五中不同顔色表示。

1、  淺灰色方框。分别代表了用戶端的一次http請求,和伺服器端運算結束之後的一次響應。

2、  淺紅色方框。表示一次action請求所要經過的servlet filters(servlet 過濾器)。我們可以看到最後一個filter就是我們前面介紹的webwork的前端控制器。

3、  藍色方框。這是webwork架構的核心部分。

1)  一次請求到了webwork的前端控制器,它首先會根據請求的url解析出對應的action 名稱,然後去咨詢actionmapper這個action是否需要被執行。

2)  如果actionmapper決定這個action需要被執行,前端控制器就把工作委派給actionproxy。接着她們會咨詢webwork的配置管理器,并讀取在web.xml檔案中定義的配置資訊。接下來actionproxy會建立actioninvocation對象。

3)  actioninvocation是xwork原理的(command模式)實作部分。它會調用這個action已定義的攔截器(before方法),action方法,result方法。

4)  最後,看上面流程的圖的方向,它會再執行攔截器(after方法),再回到servlet filter部分,最後結束并傳給使用者一個結果響應。

4、  靛色方框。這是攔截器部分,在上面的攔截器章節我們已經有了詳細的介紹。

5、  黃色方框。這是我們在開發web應用時,需要自己開發的程式。其中包括:action類,頁面模闆,配置檔案xwork.xml。

如果,您認為閱讀這篇部落格讓您有些收獲,不妨點選一下右下角的【推薦】 

如果,您希望更容易地發現我的新部落格,不妨點選一下左下角的【關注我】 

如果,您對我的部落格内容感興趣,請繼續關注我的後續部落格,我是【orson】 

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段 聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。 

轉載:http://www.cnblogs.com/java-class/p/5016415.html