国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于Struts和Webwork2的比較

2019-11-18 11:23:40
字體:
來源:轉載
供稿:網友


 
   比較內容
 Struts
 WebWork2
 
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鏈。很方便的從一個處理到另外一個處理。
 


 



上一篇:WebWork2特性

下一篇:FreeMarker概述

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长岛县| 绥宁县| 辽阳县| 大港区| 洛宁县| 绩溪县| 民丰县| 灵山县| 龙胜| 岗巴县| 内江市| 康马县| 花莲县| 台北县| 通江县| 苍山县| 乐清市| 中江县| 芦溪县| 哈巴河县| 宁阳县| 临城县| 大连市| 深州市| 莱西市| 安图县| 平阳县| 东宁县| 南康市| 宜兰县| 晋城| 丰台区| 峡江县| 崇义县| 临沭县| 绵竹市| 璧山县| 于都县| 安阳市| 岑巩县| 西充县|