自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Webork與Struts的十個(gè)主要區(qū)別

開發(fā) 后端
Webork與Struts的十個(gè)主要區(qū)別:1、action類。2、線程模型。3、Servlet的依賴。4、測試 。5、FormBean 。6、前端表達(dá)式語言。7、類型的轉(zhuǎn)換。8、對Action 執(zhí)行前和后的處理 。9、驗(yàn)證處理 。10、對Action執(zhí)行的控制。

Webork與Struts的區(qū)別一、action類

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

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

Webork與Struts的區(qū)別二、線程模型

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

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

Webork與Struts的區(qū)別三、Servlet的依賴

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

2、WebWork的Action不用依賴Web層和其它的容器。它可以通過ActionContext,直接去訪問Request和Response,但這個(gè)是可選的,只有在必需的請求下使用。

Webork與Struts的區(qū)別四、測試

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

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

Webork與Struts的區(qū)別五、FormBean

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

2、Webwork 能夠動(dòng)態(tài)的收集web的數(shù)據(jù)然后再賦值給bean。它也可以使用FormBean的形式,F(xiàn)ormBean可以是普通的DTO和域?qū)ο?,它不用重新根?jù)域?qū)ο髞砩尚碌腇ormBean,也不需繼承抽象類ActionForm。

Webork與Struts的區(qū)別六、前端表達(dá)式語言

1、Struts集成了JSTL,所以它主要使用JSTL的表達(dá)式語言來獲取數(shù)據(jù)??墒荍STL的表達(dá)式語言在Collection和索引屬性方面處理顯得很弱。

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

Webork與Struts的區(qū)別七、類型的轉(zhuǎn)換

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

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

Webork與Struts的區(qū)別八、對Action 執(zhí)行前和后的處理

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

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

Webork與Struts的區(qū)別九、驗(yàn)證處理

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

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

Webork與Struts的區(qū)別十、對Action執(zhí)行的控制

1、Struts創(chuàng)建一個(gè)Action,如果想控制它的執(zhí)行順序?qū)浅@щy。甚至你要重新去寫Servlet來實(shí)現(xiàn)你的這個(gè)功能需求。 

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

【編輯推薦】

  1. WebWork中返回INPUT的原因
  2. WebWork如何實(shí)現(xiàn)文件上傳配置過程
  3. WebWork下載的實(shí)現(xiàn)
  4. 通過WebWork實(shí)現(xiàn)HelloWorld
  5. WebWork的執(zhí)行流程
責(zé)任編輯:冰荷 來源: 網(wǎng)易博客
相關(guān)推薦

2023-09-04 11:00:54

CC++語言

2009-07-06 16:32:17

ASP與JSP的區(qū)別

2023-04-09 15:15:27

云計(jì)算混合云數(shù)字化轉(zhuǎn)型

2024-04-30 10:35:36

數(shù)據(jù)中心數(shù)據(jù)保護(hù)

2015-04-20 15:27:53

EPONGPON光網(wǎng)絡(luò)

2022-05-24 15:02:04

CIOCTOIT領(lǐng)導(dǎo)者

2010-12-06 16:57:13

FreeBSDLinux

2010-08-17 16:27:40

UPSEPS

2021-03-13 07:49:27

OLTPOLAP數(shù)據(jù)庫

2010-03-11 09:46:27

無線交換機(jī)

2023-02-22 13:02:57

智能建筑物聯(lián)網(wǎng)

2023-03-27 16:36:50

邊緣計(jì)算云計(jì)算

2023-05-04 17:20:54

AWS ECSAWS Lambda云計(jì)算

2023-11-29 08:00:00

人工智能機(jī)器學(xué)習(xí)

2010-03-19 14:38:44

SWITCH交換機(jī)

2009-10-10 17:06:09

VB和VB.NET

2023-07-20 17:19:57

2022-05-16 14:13:45

5G4G通信

2013-05-14 15:43:53

綜合布線布線技術(shù)通信網(wǎng)絡(luò)

2015-07-21 10:49:11

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號