2011年公司選擇了jsf作為專案開發框架,經過5年逐漸對這個框架了解越發深刻。
初接觸jsf,各種不適應,不能在jsf頁面嵌入java代碼控制頁面控制元件顯示隱藏;校驗機制僵化,沒法對提交的部分控制元件做部分校驗;每次頁面提交都會序列化與反序列化viewstate;甚至頁面上判斷if,for等回圈寫法都有很大的區別。令人不解的幾大生命周期;看似美好的組件重用看起來并沒有什么太大的用處。
后來接觸多了,發現jsf在一些處理上還是有獨到之處,如對viewstate的支持就大大簡化了物件的存盤;將http請求回應開發模式轉變為事件驅動開發方式等,都是比較有意思的設計思路。
使用jsf到底是利多還是弊多?我來談談我的看法。
jsf的弊端:
1.標準的與一些第三方框架的組件,很難滿足一些復雜業務的需要。復雜組件往往需要自定義,但自定義的組件有很難具備通用型(一般的程式員很難規劃一個粒度適中的組件)。如資料表格變為三級表頭,動態合并行等等。
2.viewstate看似比較笨重,不論提交一個控制元件還是多個控制元件都會把后臺的屬性序列化為viewstate隱藏文本,用于恢復視圖,每次會多余提交10-100k的內容。
3.檔案較少,資料難查,這點不用多說
4.組件本身實作有缺陷,如檔案上傳有時候無法正常上傳,日期文本等在一些瀏覽器上的樣式問題,默認樣式太丑等。
5.接著上一點,修復缺陷的代價太大,出錯之后無從找起,比如檔案上傳用richfaces的幾天搞不定,自己用servlet寫了一個,用一個h:inputhidden來作為中間變數,兩天搞定。自己寫的東西自己能全程把控,開源框架號稱有原始碼但幾人能看懂。
6.缺乏一個給力的IDE,市面上目前的ide很難支撐實際業務開發需要,只能做一些粗淺的表單頁面,離客戶實際使用太遠。
其中個人認為第五條最讓人難以接受。第六條限制了jsf的普及。
但jsf就這樣神秘,笨重,這么一無是處嗎?
1.jsf將復雜的http請求回應的開發模式轉變為事件驅動開發,簡單容易理解,學習過vb,delphi等都應該有深刻體會。
2.viewstate將資料序列化到頁面上提交時反序列化,極大的簡化了程式員在資料存盤上的作業。如用戶id,編號,名稱,性別等欄位資訊,在struts中必須用4個隱含控制元件放到前端和后端action頁面資料物件系結,或者前端只有一個用戶id,后端在每次請求到達或處理時重新從資料庫取,這些都需要代碼實作。使用jsf的話只要第一次獲取了資料,今后不論多少次處理這些屬性都可以通過物件直接獲取。
3.jsf在搭配一個給力的ide時將會展現出無與倫比的力量。
4.jsf允許自定義組件,這樣的思想,如果被合理使用將大大減少專案開發成本。
總得來說jsf有利有弊,個人認為衡量一個技術好不好是很難的,不能人云亦云。只有最適合的技術沒有最好的技術。
jsf使用時首先要分析客戶群體,比如都是網路比較差的用戶或互聯網應用,那么考慮用jsp和servlet。
jsf本質上就是html。因此無法實作或者它不方便實作的功能都可以用html技術加隱藏文本替代。如檔案上傳,多行表頭,各種html5控制元件,還有瀏覽器兼容樣式問題其實都可以繞開jsf本身的機制;不要為了技術而技術,繞開一門技識訓有另外的技術,繞開技術的解決方式還可以有非技術的處理方式。
另外最后一個很重要的一點,使用jsf如果能有一個好用的IDe將是一件如虎添翼的事。
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
您好,請教JSF的使用問題。JSF專案很多bean直接使用session或者view的scope,這樣整個物體內容就都存入session了。如果要建立JSF的負載均衡,做session共享,很多物件無法序列化,如注入的service和hibernate等。
我使用了MemcachedSessionManager和RedisSessionManager都遇到這個問題,您在使用中是否遇到過?
您這邊做JSF專案的session共享是怎么做的?謝謝!
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
嗯 支持擼主~~~~~~~~~~~~~~~~~uj5u.com熱心網友回復:
我也是用了好多年的jsf,和樓主差不多,也有感觸。最大的感觸是,只要是非前端出身的程式員,利用jsf的事件驅動是很容易掌握的,然后我們又給予模型驅動自己開發了一個eclipse的插件幫助生成jsf的頁面,目前看來對于企業級應用是夠用了。jsf的sessionbean運用的最多,我們當初也想到過負載均衡會話共享的問題,但是好像jsf和spring-session整合有些問題,不是每次都能將sessionbean存成功,后來就放棄了,因為感覺沒有那么高要求的平滑負載,不知道有什么場景需要做到這個uj5u.com熱心網友回復:
有人把jsfsession共享搞定了沒轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/86937.html
標籤:非技術區
上一篇:maven專案里multipartFile.transferTo(file);錯誤,怎么解決
下一篇:關于html抓包
