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

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

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

開(kāi)通VIP
表現層框架Struts/Tapestry/JSF架構比較
 Struts/Tapestry/JSF是目前J2EE表現層新老組合的框架技術(shù)。從誕生時(shí)間上看,Struts應該比較早,使用得非常廣泛, Tapestry 3.0逐漸引起廣泛的重視,正當Tapestry即將大顯身手時(shí)期,SUN推出JSF標準技術(shù),雖然JSF一開(kāi)始推出尚不成熟,留出了一段空白期,但是隨著(zhù)JSF1.1標準推出,JSF開(kāi)始正面出擊,粉面隆重登場(chǎng)了。

  其實(shí),JSF和Tapestry也并不是那種頭碰頭的相同競爭性技術(shù),兩者還是各有側重點(diǎn)的,不過(guò)比較細微,但是這種細微點(diǎn)在實(shí)現一個(gè)大工程時(shí)可能帶來(lái)不同的感受和變化。

  首先,我們從一個(gè)高度來(lái)抽象一下表現層框架應有的技術(shù)架構,下圖可以說(shuō)所有表現層框架技術(shù)都必須實(shí)現的功能架構圖:

  當然,我們不必廢話(huà)羅嗦MVC模式,MVC模式是基準模式,現在框架技術(shù)已經(jīng)不必再拼是否是MVC模式了。 在上圖MVC模式基礎上,一個(gè)表現層框架無(wú)外乎要實(shí)現圖中的三個(gè)功能:

1.在當前頁(yè)面能夠顯示一個(gè)組件對象的內容;而不是象純JSP那樣,需要在Jsp頁(yè)面寫(xiě)入“調用對象方法”的Java代碼。

2.當用戶(hù)按下頁(yè)面的提交按扭或鏈接后,事件發(fā)生,這時(shí)應該觸發(fā)服務(wù)器端并將當前頁(yè)面的參數提交給服務(wù)器。這種機制表現在Form表單提交和有參數的鏈接<a href=""></a>

3.從一個(gè)頁(yè)面視圖直接跳轉到另外一個(gè)頁(yè)面視圖,單純的導航作用。

我們通過(guò)下表來(lái)比較這 三種框架在實(shí)現上圖各個(gè)功能時(shí)技術(shù)細節,從而得出他們的異同點(diǎn)和偏重點(diǎn)。

 StrutsTapestry3.0JSF
在View顯示的組件要求

組件必須繼承ActionForm

分顯式調用和隱式調用
組件必須繼承BaseComponent
普通POJO
無(wú)需繼承
Managed Bean
組件在View顯示粒度View頁(yè)面只能顯示與表單對應的ActionForm,配置中Action ActionForm 頁(yè)面一般只能1:1:1關(guān)系。可將組件嵌入頁(yè)面任何一行,對使用組件數量無(wú)限制。同Tapestry
頁(yè)面分區tiles使用Tiles標簽庫實(shí)現,需要另外tiles-def.xml配置文件組件有自己的視圖頁(yè)面,通過(guò)調用組件即直接實(shí)現多個(gè)頁(yè)面組合。強大自然的頁(yè)面組合是其特點(diǎn)。通過(guò)組件+標簽庫實(shí)現Subview,但如需重用Layout,還要結合Tiles.
頁(yè)面跳轉使用標簽庫html:link中寫(xiě)明目標URL,URL名稱(chēng)需要對照配置文件的path命名,與組件Action耦合。URL名稱(chēng)是目標的組件名稱(chēng),不涉及URL和路徑等操作,方便穩固。類(lèi)似Struts,也需要在配置文件中查找,與組件分離。
參數傳遞使用html:link時(shí)傳遞參數超過(guò)一個(gè)以上處理麻煩。直接調用組件,直接賦予參數,沒(méi)有參數個(gè)數限制參數分離傳遞給組件
事件觸發(fā)通過(guò)表單提交submit激活,不能細化到表單里字段。能夠給于表單每個(gè)字段貼一個(gè)事件,事件組件必須實(shí)現PageListener接口同Tapestry,事件組件必須實(shí)習ActionListener 接口

Struts組件編程模型

  Struts實(shí)現組件編程時(shí)有一些復雜:經(jīng)常為一個(gè)頁(yè)面中需要引入多個(gè)組件而頭疼,因為Struts中無(wú)法直接引入多個(gè)組件,必須繞一些圈子:

  一般分兩種情況:如果同一個(gè)Action就可以對付這些組件,那么在這種情況下有兩個(gè)辦法:

1.將這多個(gè)組件裝入一個(gè)ActionForm中,如使用MapForm等機制;

2.手工將多個(gè)組件裝入request/session等scope中,然后根據其名稱(chēng)在jsp中獲得。

  這兩個(gè)方法都有缺點(diǎn): 第一種辦法經(jīng)常一個(gè)ActionForm弄得面目全非,變成一個(gè)大雜燴,違反了OO分派封裝的原則;第2種辦法其實(shí)又回到j(luò )sp編程;

  第二種情況,如果這些組件必須有預先由不同的Action來(lái)處理,每個(gè)組件必須經(jīng)過(guò)Action -->ActionForm流程,在這種情況下有兩種辦法:

1.使用Tiles, 不同流程輸出到同一個(gè)頁(yè)面的不同區域。是一種并行處理方式。

2. 對多個(gè)流程首尾相連,第一Action forward結果是第二個(gè)Action,最后輸出一個(gè)Jsp,在這個(gè)jsp中就可以使用前面多個(gè)流程的多個(gè)ActionForm了,這屬于串行方式。

Struts組件模型缺點(diǎn)

  Struts組件編程必須限定在A(yíng)ction/ActionForm/JSP這三個(gè)框框中做文章,難度相對比較大,而Tapestry/JSF則沒(méi)有太多這些技術(shù)框框限制,兩者在組件編程方面更讓編程者自由一些,方便一些,這也是組件型框架的優(yōu)勢吧。

Struts標簽庫

  在Struts中,經(jīng)常需要使用標簽庫來(lái)顯示組件ActionForm中內容,這就涉及到一個(gè)結合的問(wèn)題,標簽庫是別人寫(xiě)的,參考Struts的標簽庫用法,而組件是自己的,難度和麻煩就體現在這個(gè)結合點(diǎn)上。

  JSF基本思路和Struts差不多,只不過(guò)換了不同標簽庫,也需要標簽庫+組件的結合思考,不過(guò)因為組件這里是通用組件,沒(méi)有什么限制,所以這樣比Struts要輕松一些。

  Tapestry使用了組件庫概念替代了標簽庫,沒(méi)有標簽庫概念,這樣就沒(méi)有標簽庫和自己的組件需要結合的問(wèn)題,都是組件的使用,組件中分Tapestry標準組件和自己定義的組件,這也是接觸了Jsp體系的人學(xué)習Tapestry面臨的一個(gè)思路轉換。

  具體以頁(yè)面跳轉為例子,頁(yè)面跳轉是靠鏈接<a href="目標"></a> 實(shí)現,鏈接是頁(yè)面經(jīng)常使用的元素。

  Struts提供的html:link在頻繁使用就特別不方便,尤其在傳遞多個(gè)參數時(shí):其中html:link的page值,是跳轉對方頁(yè)面或 Action的path,這個(gè)path一般需要到struts-config.xml查找Action的相應path,一旦配置文件path值修改,涉及到這個(gè)所有相關(guān)頁(yè)面都要修改。

  JSF將鏈接概念劃分兩個(gè)方面:導航性質(zhì)和事件激活,在導航方面還是需要到配置faces-config查詢(xún)Navigation的from-outcome的值。

  由于Tapestry沒(méi)有標簽庫概念,只有組件或頁(yè)面兩個(gè)概念,因此,鏈接跳轉目標要么是組件,要么是頁(yè)面,簡(jiǎn)潔簡(jiǎn)單,它沒(méi)有多余的path概念,就是組件名,也就是對象名稱(chēng),組件名稱(chēng)和path名稱(chēng)合二為一。

總結

  JSF在很大程度上類(lèi)似Struts,而不是類(lèi)似Tapestry,可以說(shuō)是一種Struts 2.0,都是采取標簽庫+組件的形式,只是JSF的組件概念沒(méi)有象Struts那樣必須繼承ActionForm的限制;JSF在事件粒度上要細膩,不象 Struts那樣,一個(gè)表單一個(gè)事件,JSF可以細化到表單中的每個(gè)字段上。

  JSF只有在組件和事件機制這個(gè)概念上類(lèi)似Tapestry,但是不似Tapestry那樣是一個(gè)完全組件的框架,所以,如果你做一個(gè)對頁(yè)面要求靈活度相當高的系統,選用Tapestry是第一考慮。

  Struts/JSF則適合在一般的數據頁(yè)面錄入的系統中,對于Struts和JSF的選用,我目前個(gè)人觀(guān)點(diǎn)是:如果你是一個(gè)新的系統,可以直接從JSF開(kāi)始;如果你已經(jīng)使用Struts,不必轉換,如果需要切換,可以將JSF和Tapestry一起考慮。

  另外,JSF/Tapestry不只是支持Html,也支持多種客戶(hù)端語(yǔ)言如WML或XUI等。

  這三者之間關(guān)系:如果說(shuō)Struts是左派;那Tapestry則是右派;而JSF則是中間派,中庸主義是SUN聯(lián)盟的一貫策略。

  當然,你也可以發(fā)表你在實(shí)踐中這三者任何一個(gè)的使用感受,以使得后來(lái)者有一個(gè)比較。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
STRUTS 2 概述(節選)
JAVA Web框架比較
表現層架構的功能和特點(diǎn)
組件框架技術(shù)tapestry及簡(jiǎn)單對比
標簽庫,永恒的爭論話(huà)題 JavaEye專(zhuān)欄頻道
集成JSP/JSF和XML/XSLT
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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