Prodigy/kf智
          我的博客
          posts - 20,comments - 7,trackbacks - 0
          Struts和 WebWork2 Struts和Webwork是目前比較流行的MVC實現框架,那么他們之間優略如何呢?我們比較一下: Action 類 在Struts里面,每一個 Action Class都需要擴展org.apache.struts.action.Action;這個在Java編程中會引來一些問題,就是關于多種繼承的問題 Webwork僅僅需要implement com.opensymphony.xwork.Action Interface,您也可以implement其它的interface來實現更多的功能,譬如:validate(驗證),localware(國際化)等,當然 webwork2也提供了一個類ActionSupport 集成了以上功能。Developer可以根據需要實現不同的功能。 線程模型 Struts Actions必須是thread-safe方式,它僅僅允許一個實例去處理所有的請求。所以action用到的所有的資源都必須統一同步,這個就引起了線程安全的問題。 Webwork 2 actions每一個請求對應一個action,因此沒有線程的安全問題。實際上Servlet 容器對應每一個請求會產生許多Object,這種一個請求產生許多object的例子沒有證明對性能產生太多的影響。現在Web容器都是這么處理Servlet的。 Servlet的依賴 Struts處理一個Action時候必須要依賴ServletRequest and ServletResponse。所以這一層擺脫不了Server容器。而serveltRequest可能會被web層的Context使用。 Webwork2 每一個action不依賴任何層和任何容器。他們使用Request和response是通過ActionContext,所以這個對于邏輯層的分離是很重要的。 測試 因為Struts的每一個action都必須用到request和response所以都必須通過web層來進行測試。這就導致了許多測試struts都要通過web容器(盡管現在有許多測試方法cactus mock 等)。 Webwork的action能夠通過賦予一定的屬性。就可以執行。同時您可以使用一個mock的實例去測試,而不是通過啟動web容器來進行測試。 FormBean Struts 需要一個FormBeans針對每一個Form。而使用DynaBeans實際上沒有太大的意義。不能夠很好的處理現有的模型。 Webwork 能夠動態的收集web的數據然后在賦值給bean。同時它還能夠使用FormBean模式。Webwork2還允許現有的ModelDrvien進行導入處理。能夠處理它就像處理action自己的屬性一樣。 前端表達語言 Struts大部分使用的是JSTL EL(JSP2.0)去獲得數據的。在Collection上面處理顯得很弱。 Webwork前端可以使用JSTL同時也可以使用多種表現形式。譬如:velocity freemaker jspparer xml等等。Webwork2 利用ongl建立一個valuestack來搜集數據 類型的轉換 Struts FormBeans把所有的數據都作為string類型。得到一個自己需要的類型然后展示給用戶是很困難的。 Webwork2 數據都是轉換成Java中的類型。這個根據Form的類型自動轉換。然后操作這些bean十分方便。 對Action 執行前和后的處理 Struts處理action的時候是基于class的hierarchies,很難在action處理前和后進行操作。 Webwork2 允許您處理action可以通過interceptor,就是在每一個action處理前或者后進行其它操作。 驗證處理 因為struts的FormBean的屬性都被認為是string類型。許多類型的驗證都要進行類型轉換的處理。FormBean對一個驗證鏈的處理顯然不行。 而webwork2的驗證采用的是interceptor設計模式。它的這種驗證方式決定了它十分靈活。而且一個驗證可以重復不斷的使用僅僅需要一個XML文件的定義。實際上webwork2的驗證是采用了xwork的驗證框架。 Action的鏈的控制 Struts里面每一個action對應一個處理,如果一個action轉向另外一個action就很困難了。 Webwork使用一個強大的DispatcherChain去處理這個action鏈。很方便的從一個處理到另外一個處理。
          posted on 2006-04-28 09:05 xiaozhi 閱讀(256) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 临邑县| 康保县| 泾川县| 新野县| 海宁市| 泾源县| 黄浦区| 定安县| 漳浦县| 大悟县| 太保市| 三都| 台州市| 林口县| 建始县| 夹江县| 灵山县| 渝北区| 安吉县| 泽州县| 依兰县| 青河县| 聂拉木县| 邵阳县| 天长市| 巴里| 桦甸市| 荣昌县| 禄劝| 淮阳县| 宝坻区| 舒城县| 米易县| 澜沧| 乌兰察布市| 弥勒县| 大兴区| 白山市| 金坛市| 开化县| 龙井市|