日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

[转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由

發布時間:2024/4/14 javascript 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

下面是我選擇JSF而不選Struts的十大理由:
1.Components(組件)
2.Render?Kits
3.Renderers
4.Value?Binding?Expressions(值綁定表達式)
5.Event?Model(事件模 型)
6.Extensibility(可擴展性)
7.Managed?Beans(Dependency?Injection?依賴注入)
8.POJO?Action?Methods?
9.JSF?is?the?standard?Java- based?web?app?framework?(JSF是java?web應用程序的標準框架)
10.There"s?only?one?Struts(只有一個Struts)

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

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

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

7.Managed?Beans(Dependency?Injection?依賴注入)
和Spring一樣,JSF也使用了依賴注入(DJ )(或控制反轉(IoC))去實例化和初始化Bean。Struts的確為你生成了Form?Bean和Action?Bean,但是JSF可以為你生成各種各 樣的Managed?Bean。

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

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

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

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

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

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

總結

以上是生活随笔為你收集整理的[转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。