国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

JSF和AJAX企業(yè)級(jí)開(kāi)發(fā)之路(一)

開(kāi)發(fā) 后端
本文介紹JSF和AJAX企業(yè)級(jí)開(kāi)發(fā)之路,以及為什么JSF要與AJAX整合?

我的目在JSF和AJAX的整合。不管你選擇什么版本的JSF,與AJAX的整合對(duì)于構(gòu)建企業(yè)級(jí)應(yīng)用程序來(lái)說(shuō)是一個(gè)不錯(cuò)的選擇。我會(huì)給大家展示這兩種技術(shù)結(jié)合的方法,我特意增加了一些新內(nèi)容——因?yàn)樵谶@之前,已經(jīng)有了JSF和AJAX的實(shí)際測(cè)試方法,但這種測(cè)試方法出現(xiàn)并不只局限于與JSF整合的AJAX應(yīng)用,任何AJAX應(yīng)用程序都可以使用.最后,我還會(huì)陳述一下如何評(píng)價(jià)JSF和AJAX的解決方案. 現(xiàn)在,我發(fā)現(xiàn)JSF與最初的2001年所處的情況驚人的相似——那個(gè)時(shí)就已經(jīng)有許許多多的web框架,真可謂是百家爭(zhēng)鳴,而JSF在其中脫穎而出,以絕對(duì)優(yōu)勢(shì)成為JCP標(biāo)準(zhǔn).但現(xiàn)在,這種局面再次出現(xiàn)了.在過(guò)去的六年,我們始終緊跟時(shí)代的步伐,但仍然還有大量的web框架鏖戰(zhàn)在我們周圍,但是根據(jù)從采用JSF技術(shù)的網(wǎng)站數(shù)據(jù)以及供應(yīng)商為之提供的工具和組件數(shù)量來(lái)看,JSF還是在不斷增長(zhǎng)且在市場(chǎng)上仍有一席之地,因此許多供應(yīng)商也相繼推出了JSF和AJAX整合方案.在今天下午2:30的小組討論中,我和來(lái)自ICEsoft的Steve Maryka會(huì)一同出席,大家也許已經(jīng)知道Steve已經(jīng)推出一套相當(dāng)漂亮的JSF和AJAX整合方案.屆時(shí)我會(huì)以Sun代表身份出現(xiàn),當(dāng)然除Steve外,還有很多知名人士,我會(huì)將他們的姓名列在幻燈片上.但不管怎樣,我只想給你們提供一些信息,以便當(dāng)你看完這些不同的解決方案后,捫心自問(wèn):哪一個(gè)方案是最佳的?它有什么特性?這些特性可以滿足我的企業(yè)要求嗎? 

“企業(yè)級(jí)”已經(jīng)是一個(gè)被過(guò)度濫用的術(shù)語(yǔ)了.那么按照我自己的理解,企業(yè)級(jí)指的是健壯,可伸縮,易于測(cè)試以及被業(yè)界證明可用性(industry proven)等.它需要被開(kāi)發(fā)人員證明切實(shí)可行!JSF滿足上述要求,因?yàn)閯偛盼宜v的大量的站點(diǎn)和大量的供應(yīng)商支持足以證明這一點(diǎn).另一個(gè)關(guān)于“企業(yè)級(jí)”的說(shuō)法是:易于使用,易于開(kāi)發(fā),當(dāng)然也包括易于測(cè)試.TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))我的確喜歡,當(dāng)我在領(lǐng)導(dǎo)團(tuán)隊(duì)開(kāi)發(fā)一個(gè)JSF實(shí)現(xiàn)時(shí),我們所做的一切都采用了TDD,并且效果顯著.當(dāng)然,“企業(yè)級(jí)的工具”也需要同時(shí)能夠滿足開(kāi)發(fā)人員的需求.這一切往往在職場(chǎng)上扮演重要角色:你會(huì)雇用什么樣的人才?他們所掌握的技能能夠勝任這個(gè)開(kāi)發(fā)工具嗎?現(xiàn)存的開(kāi)發(fā)工具是否又能滿足他們的要求呢?并且最后一點(diǎn)我要強(qiáng)調(diào)的是:良好的可擴(kuò)展性觀念.當(dāng)你所遇到的問(wèn)題越來(lái)越多時(shí),你所依賴的解決方案也要不斷的提供抽象來(lái)解決這些不斷增長(zhǎng)的問(wèn)題,此時(shí)JSF作為一個(gè)基于組件和多個(gè)擴(kuò)展的解決方案,支持抽象和組件化滿足了可擴(kuò)展性.這就是我所定義的“企業(yè)級(jí)”概念. 

那么我所指的AJAX,也在這里告訴給大家吧:web應(yīng)用程序通過(guò)使用異步機(jī)制與服務(wù)端進(jìn)行交互,并且動(dòng)態(tài)更新瀏覽器所顯示頁(yè)面的外觀和行為.這么來(lái)定義AJAX我覺(jué)得還是有稍稍有點(diǎn)生硬.如果你與ICEsoft接觸過(guò),你會(huì)發(fā)現(xiàn)他們已經(jīng)有了AJAX的“推”模式,使用了大量技術(shù)可以異步的將內(nèi)容通過(guò)瀏覽器發(fā)送出去.大家熟知的Comet就是這種編程模式的一種實(shí)踐,它在與AJAX整合時(shí)非常有用,不過(guò)今天我沒(méi)有在幻燈片上提供任何關(guān)于它的信息,但是可以很明確地的說(shuō):Comet就是為與AJAX整合,當(dāng)然也包括與JSF的整合.

好了,說(shuō)完了的目的后,正式開(kāi)始我們今天的議程吧.為什么JSF要與AJAX整合?為什么我會(huì)強(qiáng)調(diào)AJAX對(duì)于web應(yīng)用程序來(lái)說(shuō)是必須的?JSF和AJAX的整合方法有很多.其中JSF本身的設(shè)計(jì)和特性就使得它適合協(xié)同AJAX進(jìn)行開(kāi)發(fā).下面是我們調(diào)查到的一些問(wèn)題和解決方案.

一個(gè)解決這些問(wèn)題的方案來(lái)自于Project Dynamic Faces(JSF的一個(gè)AJAX擴(kuò)展)和MCP(Mozilla Control Program,使用JUnit或TestNG來(lái)自動(dòng)測(cè)試web應(yīng)用程序的一個(gè)包).這是一個(gè)很早就有的解決方案,當(dāng)時(shí)我還在www.mozilla.org工作時(shí)已經(jīng)有些Alpha級(jí)的技術(shù)來(lái)自動(dòng)測(cè)試AJAX程序.現(xiàn)在我手頭上有一些關(guān)于它的demo。

所有的web應(yīng)用程序必須經(jīng)過(guò)下列過(guò)程.為確保萬(wàn)無(wú)一失(motherhood applepie:美國(guó)黑話或政治家慣用的說(shuō)語(yǔ)),你需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)驗(yàn)證,需要一種機(jī)制來(lái)指定頁(yè)面流程(page flow),需要整合數(shù)據(jù)庫(kù).當(dāng)然,你也許還會(huì)用持久層技術(shù),比直接就可用的JAP和Hiberante.你還需要alphabet soup,國(guó)際化,本地化,以及易于訪問(wèn).而這說(shuō)到的最后一點(diǎn),自AJAX它誕生以來(lái),就一直是開(kāi)發(fā)人員的痛.AJAX的反對(duì)者們大聲嚷嚷:“好啊,你別想向政府部門賣出任何AJAX應(yīng)用程序,因?yàn)橛蠸ection 508法案.”的確,有大量的實(shí)事擺在了面前,但不管怎么樣,web應(yīng)用程序必須是易于訪問(wèn)的.即使當(dāng)你在制作頁(yè)面的時(shí)候,你也需要考慮到對(duì)多語(yǔ)言的支持,以及基于CSS的樣式設(shè)計(jì).同樣,它還需要保證,不管在單元測(cè)試還是系統(tǒng)測(cè)試級(jí)別上都要求是可測(cè)試的.最后一點(diǎn)就是用戶體驗(yàn)了,所有這一切來(lái)來(lái)回回最終還是從開(kāi)發(fā)人員到測(cè)試人員然后再到達(dá)最終用戶.

現(xiàn)在,各種不同整合JSF和AJAX的方法都是為了降低復(fù)雜度。我現(xiàn)在為這些解決方案亮起了紅燈。(這些解決方案都)有很多的贊成和反對(duì)的聲音,但亮起的紅燈表明反對(duì)占了上風(fēng)。那么我要說(shuō)的第一個(gè)整合JSF的方式就是直接使用Naked AJAX(未經(jīng)過(guò)任何封裝的AJAX),你打算一切靠自己,什么都打算自己寫(xiě)! Frank Zammetti寫(xiě)了一本書(shū),他發(fā)明了“Naked AJAX”這個(gè)術(shù)語(yǔ),指的是你不使用任何AJAX框架,全部由自己親自來(lái)完成。如果你這么做,你會(huì)深入的理解AJAX底層的技術(shù),因此很可能你在職業(yè)上炙手可熱并且這也一切也確實(shí)是你想要得到的話,那么我不得不說(shuō)你太有才了。

你必須親自處理所有的使用XMLHttpRequest的交互請(qǐng)求,這就要求你有扎實(shí)的JavaScript基本功,使用SetTimeout函數(shù)等以及一系列常人所不愿意使用的技術(shù)。到時(shí)候,你還不得不去解決跨瀏覽器之痛,而這種痛苦對(duì)于web開(kāi)發(fā)人員來(lái)說(shuō)已經(jīng)持續(xù)多年,最后為了與它有一個(gè)了斷,你還是陷入了開(kāi)發(fā)自己框架的沼澤之中。

第二個(gè)解決方案顯得更高級(jí)些,因?yàn)槟闶褂昧薐avaScript框架。現(xiàn)在已經(jīng)有大量可用的JS框架充斥在我們周圍,比如Dojo,DWR,Prototype等,這些框架也是今天要討論的內(nèi)容。但使用這些JS框架的話,你仍然需要去為你的web應(yīng)用程序編寫(xiě)代碼,而且一旦在JSF中使用了某個(gè)JS框架(比如說(shuō)Dojo)的話,你又要去編寫(xiě)那些侵入性代碼了。

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

Struts標(biāo)簽庫(kù)

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

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

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

具體以頁(yè)面跳轉(zhuǎn)為例子,頁(yè)面跳轉(zhuǎn)是靠鏈接 實(shí)現(xiàn),鏈接是頁(yè)面經(jīng)常使用的元素。

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

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

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

總結(jié)

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

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

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

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

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

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

【編輯推薦】

  1. JSF和Spring的集成
  2. JSF中使用自定義Navigation
  3. 簡(jiǎn)單介紹JSF應(yīng)用
  4. JSF動(dòng)態(tài)生成固定表頭和行標(biāo)的DataTable
  5. JSF和JSP是一對(duì)新的搭檔
責(zé)任編輯:佚名 來(lái)源: theserverside
相關(guān)推薦

2009-06-23 15:02:56

JSF和AJAX

2010-08-04 15:20:15

Flex企業(yè)級(jí)開(kāi)發(fā)

2013-09-02 10:28:09

NoSQL

2011-12-06 14:02:27

企業(yè)級(jí)移動(dòng)開(kāi)發(fā)

2010-04-07 08:55:00

OSGiSpring

2009-03-30 09:42:28

OSGiJavaJCP

2012-05-15 15:21:29

企業(yè)級(jí)

2013-08-28 09:24:09

企業(yè)級(jí)移動(dòng)信息化解決方案

2009-12-14 20:13:57

IBM

2012-06-21 09:51:42

虛擬化

2011-07-05 14:07:36

2024-03-11 09:50:09

模型開(kāi)發(fā)

2013-08-01 00:00:00

開(kāi)發(fā)企業(yè)級(jí)App出路

2013-11-01 09:25:19

大數(shù)據(jù)HadoopSpark

2017-03-21 10:22:09

移動(dòng)開(kāi)發(fā)

2013-12-08 21:16:21

BaaS企業(yè)級(jí)移動(dòng)移動(dòng)信息化

2015-08-21 09:06:53

SaaS

2009-06-23 10:17:09

Ajax事件和錯(cuò)誤JSF2

2010-07-05 11:45:27

RationalJazz需求管理

2009-06-25 14:05:08

Ajax JSF
點(diǎn)贊
收藏

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

亚洲91网站| 亚洲图片久久| 国产日产欧美精品一区二区三区| 99精品欧美一区二区三区| 日韩精品久久久久久久软件91| 日韩欧美中文字幕精品| 中文字幕视频免费在线观看| 91麻豆视频网站| 亚洲一区三区| 日日摸夜夜添夜夜添精品视频 | 99久久99久久精品国产片| 日韩在线观看一区二区三区| 日韩精品亚洲精品| 手机电影在线观看| 精品视频在线视频| 天堂91在线| 香蕉久久一区二区不卡无毒影院| 久久精品.com| www.av亚洲| 一区二区传媒有限公司| 国产精品羞羞答答xxdd| 中文字幕久久一区| 久久99精品一区二区三区| 日韩av电影免费在线| 亚洲网站在线| 国内一区二区三区在线视频| 国一区二区在线观看| 99re在线国产| 欧美日韩福利| 精品蜜桃传媒| 丝袜国产日韩另类美女| 秋霞久久久久久一区二区| 99热这里只有成人精品国产| 99中文字幕| 国产欧美丝祙| 一区二区三区四区视频在线| 国产一区二区三区不卡在线观看 | 欧美综合另类| 91综合免费在线| 欧美激情亚洲| 国产精品久久久久久久免费大片| 在线免费高清一区二区三区| 国产精品一级久久久| 亚洲人成久久| 亚洲视频精品一区| 99视频超级精品| 又黄又爽又色视频| 日韩欧美第一页| 182tv在线播放| 中文字幕在线看视频国产欧美在线看完整| 欧美成人aaa| 国产91热爆ts人妖在线| 91精品秘密在线观看| 免费观看国产成人| 国产成人在线色| aaa免费看大片| 欧美日韩国产123区| 激情开心成人网| 91精品国产沙发| 亚洲福利一区| 97久久国产亚洲精品超碰热 | 日韩av福利| 欧美激情在线观看视频| 日韩久久精品网| 欧美一区少妇| 久久香蕉国产线看观看99| 国产特级嫩嫩嫩bbb| 91精品国产入口| 99热这里有精品| 国产免费一区二区三区香蕉精| 国产精品亚洲综合色区韩国| 亚欧无线一线二线三线区别| 亚洲地区一二三色| 超碰91在线观看| 性视频1819p久久| av成人黄色| 日韩有码免费视频| 欧美在线视频日韩| 在线日本欧美| 国产精品综合久久久| 日本 国产 欧美色综合| 99爱免费视频| 亚洲国产欧美一区| 国产伦精品一区二区三区千人斩| 久久国产精品高清| 国产午夜精品美女毛片视频| 国产一区二区影视| xxxx欧美18另类的高清| 亚洲精品国产成人影院| 日韩黄色短视频| 午夜欧美视频在线观看| 日韩大尺度黄色| 91日本在线观看| 97成人超碰视| av网站导航在线观看免费| 高清欧美性猛交| 日本系列欧美系列| av女同在线| 日韩在线一区二区三区免费视频| 欧美区国产区| 日本中文字幕视频| 色悠悠久久久久| 免费成人在线视频观看| 依依成人在线| 欧美激情视频给我| 成人18视频在线播放| a级影片在线| 91成人在线看| 亚洲女人小视频在线观看| 国产精品美女午夜爽爽| 亚洲激情啪啪| 欧美男人的天堂一二区| 国产亚洲一区二区三区啪| 老熟妇仑乱视频一区二区| 欧美一级日韩一级| 欧美福利一区| 亚洲高清国产精品| 日韩美女在线观看| 中文字幕中文字幕一区二区| 欧美gay视频| 亚洲一区二区三区免费观看| 欧美精品日韩综合在线| 五月激情久久久| 诱人的瑜伽老师3hd中字| 国模吧一区二区三区| www.日韩在线| 亚洲ww精品| 欧美日韩一道本| 最新国产成人av网站网址麻豆| 韩国三级电影一区二区| 羞羞的视频在线观看| 欧美日韩免费高清| 欧美日韩国产bt| 欧美激情在线| 自拍视频在线网| 国产精品久久久久久久久久直播| 亚洲一线二线三线视频| 成人三级视频| julia京香一区二区三区| 国产成人一区二区三区小说| 91麻豆精东视频| 国产精品日韩精品在线播放| 国产超碰在线播放| 久久久久久中文字幕| 国产亚洲精品超碰| xxxxxhd亚洲人hd| 99aiav| 97免费视频在线播放| 亚洲国产成人在线| 精品一区在线| 国产福利电影在线| 日韩精品资源| 中文字幕av一区二区| 国产欧美一区二区精品性色| 色综合中文网| 69av在线| 最近看过的日韩成人| www.日韩系列| 一区二区三区成人| 亚洲人人精品| 欧美成人精品三级网站| 成人免费xx| 91精品综合久久久久久五月天| 在线观看av一区| 麻豆成人免费电影| 亚洲一区二区三区中文字幕在线观看| 一级特黄特色的免费大片| 激情视频在线观看一区二区三区| 亚洲精品自拍偷拍| 亚洲色图欧美在线| 亚洲精品在线观看91| 色综合www| 久久综合婷婷综合| 亚洲人成人99网站| 亚洲国产激情av| 99国内精品久久久久久久| www免费视频观看在线| 欧洲精品在线播放| 97久久伊人激情网| 亚洲一区二区在线免费观看视频| 亚洲网一区二区三区| 色琪琪免费视频网站| 欧美日韩国产不卡在线看| 一区二区三区日韩在线| 蜜桃免费网站一区二区三区| 91久久在线播放| 亚洲国产成人精品一区二区| 国产福利91精品一区| 日韩电影在线观看完整免费观看| 色老板在线观看| 欧美亚洲在线播放| 91在线观看高清| 欧美日本二区| 婷婷六月综合| 欧美国产一区在线| 色偷偷久久一区二区三区| 亚洲国产精品久久不卡毛片| 成人黄色综合网站| 欧美视频在线观看免费网址| 欧美久久一二区|