亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

選擇JSF不選Struts的十大理由

2024-09-05 00:17:05
字體:
來源:轉載
供稿:網友

我的一個客戶不知道該選用Struts還是JSF。就像你預料的那樣,我通常會問:這2中框架之間有什么區別?當然,除了我的這個客戶外很多人都面臨這樣的選擇。

總的來說,我建議在新項目中優先考慮JSF。雖然常常有一些商業上的因素迫使我們為現有的項目選擇了Struts,而且那些解決方案還有待考驗,但是,讓我們面對一個事實:JSF比Struts好多了。

下面是我選擇JSF而不選Struts的十大理由:

1.Components(組件)

2.RenderKits

3.Renderers

4.ValueBindingExpressions(值綁定表達式)

5.EventModel(事件模型)

6.Extensibility(可擴展性)

7.ManagedBeans(DependencyInjection依賴注入)

8.POJOActionMethods

9.JSFisthestandardJava-basedwebappframework(JSF是javaweb應用程序的標準框架)

10.There'sonlyoneStruts(只有一個Struts)

10.There'sonlyoneStruts(只有一個Struts)

Struts是一個開源產品,然而JSF是一個標準。這個細節常常被新的JSF學習者忽略,其實這是顯而易見的,因為我們有多個JSF的實現。雖然JSF還很不成熟,但是我們已經有了2個優秀的JSF實現可以選擇:Sun的參考實現和Apache的MyFaces。另一方面,我們只有一個Struts。

9.JSFisthestandard(JSF是標準)

JEE5.0要提供一個JSF的實現,這表明JSF不久將會無處不在。這可能與你無關,但是和工具供應商密切相關?,F在大概有50個javaweb應用程序框架,工具供應商不會情愿去支持一個特別的框架,但是他們會毫不猶豫的去支持一個標準。而且不止供應商,開源項目也會迅速的聚集在JSF的四周,爭先恐后的去實現相同的功能。比如說,直到我們去實現本質上和Shale的Tapestry差不多的視圖的時候,我才知道Facalets。(從長遠來看,我相信這種冗余是件好事,會給我們帶來好處)

8.POJOActionMethods

Struts的行為是和Struts的API綁定在一起的,但是JSF的行為方法可以在POJPO中實現。這意味著你不用在表單和模型對象之間實現一個多余的行為層。順便說一下,在JSF里面沒有行為對象,行為在模型對象中實現。但是也請注意一點:如果你愿意你也可以生成與JSF獨立的行為對象。在Struts里面,你有FormBean和ActionBean。FormBean包含數據而ActionBean包含邏輯。OO狂會想去合并前2者,在Struts你辦不到。但是在JSF中,你可以分開數據和邏輯,也可以合并到一個對象中,一切由你決定。

7.ManagedBeans(DependencyInjection依賴注入)

和Spring一樣,JSF也使用了依賴注入(DJ)(或控制反轉(IoC))去實例化和初始化Bean。Struts的確為你生成了FormBean和ActionBean,但是JSF可以為你生成各種各樣的ManagedBean。

6.Extensibility(可擴展性)

這個很重要。JSF有6個對象實現了這個框架的大部分功能,而且你可以很容易的用你自己的實現代替原有實現。比如你想加一個自定義參數在JSF表達式語言里面,或是添加一個自己的視圖控制器以便于區分組件和HTML。事實上Shale實現了上面的功能。如果你還沒有滿足,JSF提供了幾個地方你可以輕松的控制JSF的生命周期。Shale給你的會更多。

5.EventModel(事件模型)

JSF的事件模型使你可以對值改變,動作,JSF生命周期階段變換等作出反應。在JSF1.1中,那些事件都是在服務器端處理的,這肯定是一個缺陷,好在JSF2.0計劃支持客戶端事件,拭目以待吧。

4.ValueBindingExpressions(值綁定表達式)

在Struts中,你負責把數據從Form傳遞到模型對象。你實現的Action的execute方法是把Form作為一個參數。然后你再手動的把數據從FormBean里面取出放到模型對象里面。你要為應用里面的每個Form做這些事情,然而在JSF里面,你只需像這樣:#{model.property}就夠了,其他的交給JSF來處理。

3.Renderers

你有看過Struts的標簽的源代碼嗎?它直接生成HTML。JSF組件標簽什么都不生成,它和服務器上的一對component-renderer對應。Component維護組件狀態,rendered負責獲得視圖。重點是renderers是可插拔的,即你可以根據自己需求實現然后替代掉默認實現。比如說我在NFJS上面的Felix談話中舉例說明了怎么去實現一個自定義的labelrenderer。你只需要配置你的renderer,JSF就會自動在你的應用程序里面使用他。

2.RenderKits

在幾年前我曾經有份Struts咨詢工作,我們必須同時支持瀏覽器和無線設備,非常痛苦。但是用JSF來完成那個任務非常容易,因為你可以生成你自己的renderkit-為一種特定顯示技術的renderers的集合-然后配置到JSF里面。

1.Components(組件)

組件是Struts和JSF之間最大的區別。就像Swing一樣,JSF提供豐富的底層構件去開發組件然后添加到標準的組件集。那些底層構件讓你很容易的生成自己的組件并且和別人共享。現在我們到處都能看到自定義組件跳出來,比如說Oracle的ADF和MyFaces,兩者都提供了豐富的組件集,就像javascript日歷,tree等等。當然,組件只是一部分。典型的是,組件都和一個獨立的renderer對應,這給我們帶來了真正的好處(看第3條)。但是和JSF中的很多東西一樣,你不一定要墨守成規。只要你愿意,你可以實現render自己的組件,雖然這樣你會失去給組件加入別的renderer的能力。

有很多只能意會不能言傳啊,比如Renderer等。翻譯得不好,大家可以去看看原文。原文出自DavidGeary'sBlog,原文地址為:http://jroller.com/comments/dgeary/Weblog/

來源:http://blog.csdn.net/cqluojia/services/trackbacks/

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频一区二区| 国产91精品久久久久| 久久久视频免费观看| 久久影视电视剧免费网站清宫辞电视| 成人精品久久一区二区三区| 国产精品91在线观看| 26uuu日韩精品一区二区| 欧美精品日韩三级| 综合网日日天干夜夜久久| 国产美女扒开尿口久久久| 日本精品一区二区三区在线播放视频| 亚洲天堂第一页| y97精品国产97久久久久久| 在线播放日韩精品| 97精品一区二区视频在线观看| 少妇高潮久久77777| 亚洲成avwww人| 欧美老少做受xxxx高潮| 中文字幕在线观看日韩| 国产精品亚洲视频在线观看| 青草青草久热精品视频在线观看| 欧美成人黑人xx视频免费观看| 欧美日韩亚洲天堂| 亚洲a∨日韩av高清在线观看| 亚洲va欧美va国产综合久久| 国产精品一二三在线| 成人免费观看49www在线观看| 精品亚洲一区二区三区在线观看| 国产精品久久久久久影视| 亚洲精品一区av在线播放| 尤物九九久久国产精品的分类| 国内成人精品一区| 富二代精品短视频| 精品久久久一区二区| 91色中文字幕| 精品中文字幕在线2019| 视频在线观看99| 久久久成人的性感天堂| 久久久97精品| 国产一区二区三区高清在线观看| 欧美成人在线网站| 91av免费观看91av精品在线| 亚洲最大的成人网| 欧美丰满少妇xxxx| 欧美色图在线视频| 日韩女在线观看| 亚洲国产精品字幕| 欧美精品免费播放| 欧美中文字幕视频在线观看| 欧美一二三视频| 国产精品午夜视频| 国产在线观看一区二区三区| 美女撒尿一区二区三区| 草民午夜欧美限制a级福利片| 色婷婷av一区二区三区在线观看| 色妞色视频一区二区三区四区| 久久免费精品日本久久中文字幕| 久久久精品国产一区二区| 97国产精品视频人人做人人爱| 日韩av电影中文字幕| 亚洲一区二区福利| 欧美日韩亚洲网| 国产精品igao视频| 久久精品国产亚洲精品2020| 欧美与欧洲交xxxx免费观看| 色悠悠久久久久| 欧洲精品久久久| 福利一区视频在线观看| 亚洲一区二区在线播放| 国产精品视频在线播放| 欧美亚洲成人xxx| 欧美一级高清免费播放| 色综合久综合久久综合久鬼88| 亚洲国产欧美一区二区丝袜黑人| 久久成人精品电影| 日韩在线欧美在线国产在线| www.日本久久久久com.| 欧美激情精品久久久久久| 91豆花精品一区| 亚洲小视频在线观看| 国产日韩欧美在线视频观看| 国产精品无av码在线观看| 久久精品国产96久久久香蕉| 亚洲激情中文字幕| 久久理论片午夜琪琪电影网| 久久精品视频播放| 91精品久久久久久综合乱菊| 亚洲国语精品自产拍在线观看| 欧美色视频日本高清在线观看| 国产主播喷水一区二区| 亚洲电影在线看| 色先锋久久影院av| 日韩精品中文在线观看| 欧美性极品少妇精品网站| xxxxxxxxx欧美| 91香蕉亚洲精品| 国模精品系列视频| 国产精品久久久久久久久久尿| 欧美日韩国产影院| 欧美另类老肥妇| 在线丨暗呦小u女国产精品| 久久影视电视剧免费网站| 国产精品www色诱视频| 精品一区二区三区三区| 97国产成人精品视频| 亚洲欧美国产一本综合首页| 午夜精品一区二区三区在线视频| 亚洲精品国产精品国自产在线| 国产精品成人免费电影| 97香蕉久久夜色精品国产| 久久久免费电影| 日韩电影在线观看免费| 国产精品成人免费视频| 久久99久久99精品免观看粉嫩| 国产精品免费观看在线| 俺去了亚洲欧美日韩| 国产精品女主播视频| 成人a免费视频| 自拍偷拍亚洲一区| 日韩欧美一区二区三区久久| 亚洲成年网站在线观看| 92裸体在线视频网站| 成人午夜两性视频| 亚洲国产黄色片| 92福利视频午夜1000合集在线观看| 国产在线视频欧美| 久久91亚洲精品中文字幕奶水| 久久久免费精品| 欧美日韩另类在线| 欧美在线性爱视频| 日本中文字幕久久看| 欧美疯狂xxxx大交乱88av| 91久久久久久久久久| 成人久久精品视频| 亚洲新声在线观看| 久久久久久国产精品久久| 国产91精品久久久久久| 久久久亚洲网站| 亚洲精品久久久久久久久久久| 91sa在线看| 欧美精品日韩三级| 日韩在线国产精品| 成人a在线视频| 日韩电影在线观看免费| 96pao国产成视频永久免费| 最近中文字幕日韩精品| 精品视频9999| 欧美日韩精品在线| 性欧美xxxx视频在线观看| 亚洲一二三在线| 国产精彩精品视频| 91精品中文在线| 中文字幕久久久av一区| 怡红院精品视频| 精品国内产的精品视频在线观看| 久久免费国产精品1| 日韩视频免费大全中文字幕| 亚洲国产成人在线视频| 国产一区二区三区四区福利| 亚洲人成77777在线观看网| 久久这里只有精品视频首页| 国产香蕉精品视频一区二区三区| 亚洲女人天堂网| 久久综合久久美利坚合众国|