成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

選擇JSF不選Struts的十大理由

開發 后端
本文介紹選擇JSF不選Struts的十大理由,包括Components(組件),Value Binding Expressions(值綁定表達式)等。

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

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

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

1.Components(組件)

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

2.Render Kits

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

3.Renderers

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

4.Value Binding Expressions(值綁定表達式)

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

5.Event Model(事件模型)

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


6.Extensibility(可擴展性)

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

7.Managed Beans(Dependency Injection 依賴注入)

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

8.POJO Action Methods

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

9.JSF is the standard(JSF是標準)

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

10.There's only one Struts(只有一個Struts)

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

【編輯推薦】

  1. 簡述JSF是什么
  2. Facelets非常適合JSF組件
  3. JSF的八大優勢
  4. JavaServer Faces(JSF)簡介
  5. 簡述JSF組件模型
責任編輯:佚名 來源: 中國IT實驗室
相關推薦

2010-11-19 15:59:51

IT跳槽

2010-05-24 09:09:37

2013-01-15 12:40:21

黑莓10BB10智能手機

2013-09-16 10:28:05

企業PC桌面操作系統

2010-08-20 14:19:12

火狐IE

2015-10-16 10:46:31

2011-04-25 09:26:36

平板電腦

2013-10-25 14:17:58

SAP

2009-07-16 16:56:28

Java

2013-01-08 14:07:28

2015-09-06 08:53:22

谷歌Docs理由

2011-07-05 18:01:18

2013-10-18 17:14:48

SAP

2011-03-24 09:26:31

BlackBerryPlayBook平板電腦

2011-12-08 09:39:27

HTML 5

2013-03-25 10:02:53

Chrome OS

2012-12-21 15:12:28

Microsoft D企業級管理解決方案ERP

2009-12-01 09:16:43

Windows 7英特爾聯盟

2012-04-05 09:32:38

Lumia 900iPhone

2011-06-30 09:51:56

Office365云計算微軟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产伦精品一区二区三区视频金莲 | 欧美不卡一区二区三区 | 国产欧美精品一区二区 | 亚洲一区二区三区在线播放 | 国产一区二区三区 | 五月婷婷色 | 毛片一级电影 | 午夜理伦三级理论三级在线观看 | av黄色免费 | 三级视频久久 | 日一区二区 | 在线成人 | 96久久久久久| 日韩一| 伊人超碰 | 日韩精品一区二区三区 | 亚洲网站在线观看 | 中文字幕一级 | 国产欧美精品区一区二区三区 | 日韩成人在线播放 | av天天干 | 欧美在线日韩 | 亚洲视频免费观看 | av日韩在线播放 | 青娱乐一区二区 | 亚洲视频中文字幕 | 99综合网 | 黄色在线观看网址 | 日韩激情一区 | 久久国产亚洲 | 久久久国产精品 | 日韩精品福利 | 99精品一区| 成人免费视频在线观看 | 日本午夜免费福利视频 | 亚洲视屏| 天天综合干 | 精品国产乱码久久久久久88av | 日韩欧美国产一区二区 | 99久久久久久 | 中文字幕一区在线观看视频 |