欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Struts vs webwork 中文

Struts vs webwork 中文

這是前一篇文章的譯文,來(lái)自moxie的《WebWork教程-0.90版》
歡迎一起探討WEB Framework。http://www.blogjava.net/soochow_hhb/ 

Struts1.1

WebWork2

Action類(lèi)

Struts里面,每一個(gè)Action類(lèi)必需要繼承一個(gè)抽象的類(lèi)org.apache.struts.action.Action。這個(gè)在Java編程中會(huì )引來(lái)一些問(wèn)題,就是關(guān)于多種繼承的問(wèn)題。

WebWorkAction類(lèi)僅需要實(shí)現接口com.opensymphony.xwork.Action,也可以實(shí)現其它的接口來(lái)實(shí)現更多的功能,譬如:validate(驗證),localware(國際化)等。當然,它也提供了一個(gè)類(lèi)ActionSupport集成了上面的所有功能,我們在開(kāi)發(fā)中可以根據需要選擇。

線(xiàn)程模型

Struts Action必需是threadsafe方式,它僅僅允許一個(gè)實(shí)例去處理所有的請求。所以action用到的所有的資源都必需統一同步,這個(gè)就引起了線(xiàn)程安全的問(wèn)題。

WebWork中,每個(gè)請求對應一個(gè)Action,因此沒(méi)有線(xiàn)程的安全問(wèn)題。實(shí)際上Servlet容器對每個(gè)請求也產(chǎn)生多個(gè)對象,它也沒(méi)有證明對性能和垃圾回收產(chǎn)生太多的影響。

Servlet的依賴(lài)

Struts處理Action時(shí)必需要依賴(lài)ServletRequest ServletResponse,所有它擺脫不了Servlet容器。

WebWorkAction不用依賴(lài)Web層和其它的容器。它可以通過(guò)ActionContext,直接去訪(fǎng)問(wèn)RequestResponse,但這個(gè)是可選的,只有在必需的請求下使用。

測試

Struts的每個(gè)Action都同Web層耦合在一起,這樣它的測試依賴(lài)于Web容器,單元測試也很難實(shí)現。不過(guò)有一個(gè)Junit的擴展工具Struts TestCase可以實(shí)現它的單元測試。

Webworkaction能夠通過(guò)賦予一定的屬性,就可以執行單元測試。同時(shí)也可以使用一個(gè)mock的實(shí)例去測試,而不是通過(guò)啟動(dòng)web容器來(lái)進(jìn)行測試。

FormBean

Struts要求有FormBean對應每一個(gè)表單,而且FormBean必需繼承抽象類(lèi)ActionForm。而使用DynaBeans實(shí)際上沒(méi)有太大的意義。不能夠很好的處理現有的模型。

Webwork 能夠動(dòng)態(tài)的收集web的數據然后再賦值給bean。它也可以使用FormBean的形式,FormBean可以是普通的DTO和域對象,它不用重新根據域對象來(lái)生成新的FormBean,也不需繼承抽象類(lèi)ActionForm。

前端表達式語(yǔ)言

Struts集成了JSTL,所以它主要使用JSTL的表達式語(yǔ)言來(lái)獲取數據??墒?/span>JSTL的表達式語(yǔ)言在Collection和索引屬性方面處理顯得很弱。

WebWork的表達式語(yǔ)言使用了功能強大的OGNL。它使用OGNL建立一個(gè)OgnlValueStack來(lái)搜索數據。Webwork前端也可以使用JSTL,但它同時(shí)支持:velocity、freemaker、jspparer、xml。

類(lèi)型的轉換

StrutsFormBean把所有的數據都作為String類(lèi)型,它可以使用工具Commons-Beanutils進(jìn)行類(lèi)型轉化。但它的轉化都是在Class級別,而且轉化的類(lèi)型是不可配置的。類(lèi)型轉化時(shí)的錯誤信息返回給用戶(hù)也是非常困難的。

WebWork使用OGNL進(jìn)行類(lèi)型轉化,提供了所有基本類(lèi)型的轉化功能。類(lèi)型轉化可以直接對一個(gè)Class進(jìn)行(Class級別)轉化,也可以對Class的字段進(jìn)行類(lèi)型轉化。它使用攔截器可以很容易的將類(lèi)型轉化的錯誤信息返回給用戶(hù),而且錯誤信息可以對應到一個(gè)相應的字段。

Action 執行前和后的處理

Struts處理Action的時(shí)候是基于classhierarchies,很難在action處理前和后進(jìn)行操作。

Webwork2 允許您處理Action可以通過(guò)攔截器,就是在每一個(gè)Action處理前或者后進(jìn)行其它操作。它的攔截器可以在配置文件中動(dòng)態(tài)添加,這樣Action和攔截器之間完全解藕,更好的實(shí)現了組件化。

驗證處理

Struts的驗證是調用FormBeanvalidator()方法,其實(shí)就是對FormBean的驗證。它一般使用框架Commons Validation進(jìn)行數據驗證處理。它使用了一個(gè)全局的配置文件validation.xml定義了FormBean的驗證信息。StrutsFormBean屬性都被認為是String類(lèi)型,所以它在驗證時(shí)也需要額外的類(lèi)型轉化。

WebWork使用Xwork的驗證框架進(jìn)行驗證處理,它可以通過(guò)配置攔截器來(lái)激活。它可以為每個(gè)需要驗證的Class指定一個(gè)xml驗證文件,也可以為一個(gè)Class在不同的情況指定不同的xml驗證文件。WebWork證可以給每個(gè)Action類(lèi)指定對應的驗證文件,也可以給Action的字段去指定驗證文件。通過(guò)攔截器來(lái)組裝Action和其驗證文件,使它們之間完全解藕。

Action執行的控制

Struts創(chuàng )建一個(gè)Action,如果想控制它的執行順序將會(huì )非常困難。甚至你要重新去寫(xiě)Servlet來(lái)實(shí)現你的這個(gè)功能需求。

在這個(gè)方面,WebWork的攔截器棧提供了強大的功能。Action的所有切面功能都有攔截器來(lái)實(shí)現(比如:取得request請求參數、驗證處理等),這樣你就可以用攔截器棧來(lái)組織攔截器的執行順序。例如:你需要在使用request請求參數來(lái)設置Action屬性之前,使用IoC框架設置Action的屬性,反之已然。這時(shí),你就可以為packageAction指定一個(gè)攔截器棧來(lái)實(shí)現。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
InfoQ: 將Struts應用遷移到Struts 2(一)
Struts1和Struts2的區別和對比(完整版)
Struts2 學(xué)習筆記(一)
Struts2攔截器使用方法
STRUTS2核心控制器:FilterDispatcher
Struts2防止表單重復提交
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久