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

首頁 > 學院 > 開發設計 > 正文

選擇 JSF不選Struts的十大理由

2019-11-18 12:55:08
字體:
來源:轉載
供稿:網友

  我的一個客戶不知道該選用Struts還是JSF。就像你預料的那樣,我通常會問:這2中框架之間有什么區別?當然,除了我的這個客戶外很多人都面臨這樣的選擇。
  
  總的來說,我建議在新項目中優先考慮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不久將會無處不在。這可能與你無關,但是和工具供給商密切相關?,F在大概有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提供豐富的底層構件去開發組件然后添加到標準的組件集。那些底層構件讓你很輕易的生成自己的組件并且和別人共享?,F在我們到處都能看到自定義組件跳出來,比如說Oracle的ADF和MyFaces,兩者都提供了豐富的組件集,就像 javascript日歷,tree等等。當然,組件只是一部分。典型的是,組件都和一個獨立的renderer對應,這給我們帶來了真正的好處(看第3 條)。但是和JSF中的很多東西一樣,你不一定要墨守成規。只要你愿意,你可以實現render自己的組件,雖然這樣你會失去給組件加入別的 renderer的能力。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级大胆视频| 亚洲精品91美女久久久久久久| 色爱av美腿丝袜综合粉嫩av| 亚洲成人黄色在线| 日韩中文字幕精品视频| 亚洲精品中文字幕女同| 国产精品专区第二| 亚洲最大福利视频网| 九九久久久久久久久激情| 亚洲成色999久久网站| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久精品亚洲热| 亚洲美腿欧美激情另类| 国产欧美精品xxxx另类| 国产综合福利在线| 久久夜精品香蕉| 亚洲欧洲日产国产网站| 国产精品视频一区国模私拍| 97久久久免费福利网址| 久久久久久久国产精品视频| 精品国产福利视频| 亚洲专区在线视频| 色yeye香蕉凹凸一区二区av| 7777kkkk成人观看| 久久久亚洲精品视频| yw.139尤物在线精品视频| 久久av在线播放| 中文字幕在线亚洲| 一本大道久久加勒比香蕉| 欧美夫妻性生活视频| 亚洲精品色婷婷福利天堂| 曰本色欧美视频在线| 在线看福利67194| 亚洲2020天天堂在线观看| 欧美日韩国产999| 国产成人在线播放| 成人黄色片在线| 色综久久综合桃花网| 亚洲性av网站| 国产日韩精品入口| 久久人人爽人人爽人人片亚洲| 日韩av免费一区| 日本一区二区在线免费播放| 亚洲在线免费视频| 91免费福利视频| 国产91对白在线播放| 亚洲人成五月天| 自拍偷拍免费精品| 91精品国产亚洲| 国产精品中文字幕在线观看| 久久成年人视频| 亚洲国产精品99| 国产欧美中文字幕| 久久精品国产精品| 亚洲综合av影视| 久久av红桃一区二区小说| 欧美精品第一页在线播放| 亚洲精品福利在线观看| 亚洲国产精品女人久久久| 欧美第一淫aaasss性| 久久久国产成人精品| 日韩在线播放视频| 亚洲韩国日本中文字幕| 日韩av免费在线看| 亚洲精品videossex少妇| 国产成人精品免费视频| 国产这里只有精品| 国产精品第一区| 免费91麻豆精品国产自产在线观看| 欧美亚洲激情在线| 黑人精品xxx一区一二区| 国产日韩欧美夫妻视频在线观看| 丝袜美腿精品国产二区| 欧美午夜美女看片| 中国日韩欧美久久久久久久久| 国产精品青草久久久久福利99| 日韩中文字幕视频在线| 一二美女精品欧洲| 国产亚洲欧洲高清| 欧美日韩激情视频| 92福利视频午夜1000合集在线观看| 永久免费看mv网站入口亚洲| 韩国三级日本三级少妇99| 日韩精品极品毛片系列视频| 国产91精品网站| 91久久精品国产91性色| 欧美日韩成人免费| 欧美成人精品三级在线观看| 亚洲人午夜精品| 97超级碰碰碰久久久| 久久精品91久久香蕉加勒比| 日韩激情视频在线播放| 日韩国产欧美区| 国产日韩av在线| 日韩精品黄色网| 亚洲日本成人网| 国产成人精品午夜| 久久久久久久亚洲精品| 国产男女猛烈无遮挡91| 狠狠色狠狠色综合日日小说| 日韩在线观看免费全集电视剧网站| 91国语精品自产拍在线观看性色| 久久久视频免费观看| 国产精品视频内| 成人激情免费在线| 欧美性xxxx极品hd欧美风情| 欧美激情在线有限公司| 国内伊人久久久久久网站视频| 国产亚洲一区精品| 亚洲国产欧美一区二区三区同亚洲| 久久久国产视频91| 亚洲一区二区中文| 国产噜噜噜噜噜久久久久久久久| 久久精品亚洲国产| 欧美高清在线播放| 日韩欧美国产一区二区| 日本精品免费一区二区三区| 欧美极品少妇与黑人| 26uuu另类亚洲欧美日本老年| 国产欧美在线观看| 日韩中文字幕欧美| 亚洲第一中文字幕| 97久久精品视频| 久久影视电视剧凤归四时歌| 欧美性猛交xxxxx免费看| 久久精视频免费在线久久完整在线看| 国产区亚洲区欧美区| 992tv成人免费影院| 国产精品久久久久久久久久尿| 色妞色视频一区二区三区四区| 亚洲女同精品视频| 91精品视频观看| 日韩**中文字幕毛片| 亚洲激情第一页| 狠狠色香婷婷久久亚洲精品| 国产91精品青草社区| 88国产精品欧美一区二区三区| 精品国产鲁一鲁一区二区张丽| 久久国产加勒比精品无码| 国产精品视频最多的网站| 国产精品久久久久久久电影| 欧美丰满片xxx777| 91亚洲精品一区| 国产这里只有精品| 5252色成人免费视频| 欧美成人四级hd版| 欧美成人精品xxx| 国产日韩在线免费| 91情侣偷在线精品国产| 美女性感视频久久久| 亚洲精品中文字幕有码专区| 久久久久国产一区二区三区| 中文字幕日韩专区| 国产精品白丝av嫩草影院| 国产视频亚洲精品| 在线看国产精品| 91av在线网站| 成人国产精品久久久久久亚洲| 色老头一区二区三区在线观看| 免费91麻豆精品国产自产在线观看| 久久香蕉国产线看观看网| 91久久国产婷婷一区二区| 一区二区在线免费视频| 欧美一级视频免费在线观看|