JSF和Struts的區別概述

2021-09-06 11:23:43 字數 1644 閱讀 6529

jsfstruts的區別概述,都採用taglib來處理表示層:在jsp頁面中,二者都是採用一套標記庫來處理頁面的表示和model層的互動。

據說jsf的主要負責人就是struts的主要作者,所以二者的相似點還是有很多的。

都採用taglib來處理表示層:在jsp頁面中,二者都是採用一套標記庫來處理頁面的表示和model層的互動。

二者都採用了bean來作為和jsp頁面對應的model層。該model層儲存了jsp頁面上的資料,同時可以作一些驗證工作,在struts中就是formbean,在jsf中就是back bean.

都採用bean作為控制層,struts中採用actionbean來處理業務邏輯,對於簡單的應用可以直接在actionbean中編寫業務邏輯**,也可以呼叫另外的bean或者ejb來處理業務邏輯;對於jsf則採用backing bean來處理業務邏輯,同樣,backing bean也可以直接編寫業務邏輯或者呼叫其他的bean來處理業務邏輯。

都採用xml配置檔案來處理bean的配置,頁面導航等問題,增加了系統的靈活性。

都採用資源檔案來處理國際化和本地化的問題。

然而,二者的不同點也很多,下面分別說明:

1、首先二者的側重點不同,struts側重於控制層,側重於如何分派和處理使用者的請求,所以表示層的taglib功能不夠強大。而jsf則側重於表示層,實現 了大量的標準元件,允許開發人員對表示層有更多的控制權,同時jsf實現了乙個開放的架構,允許開發人員建立自己的元件,或者在現有的元件上繼承,開發功 能更強大的元件。本人認為這是jsf最大的乙個特色。(有點類似於vcl和。net元件)

2、和jsp 對應的model層,在struts中採用formbean來儲存使用者輸入的資料,基本上一般欄位的型別都是string.而且可以進行簡單的驗證,當然 如果採用動態的formbean就不能在formbean中進行驗證了。在struts中,jsp和formbean是緊密結合在一起的,只要寫乙個 jsp就必須對應乙個formbean,同時jsp上的每個元件都對應formbean中相同名字的字段。本人認為這裡不太靈活,比如,開發頁面的時候就 必須考慮後台的formbean的實現,但此時如果該頁面沒有formbean的化則程式執行時會出錯。在jsf中,jsp頁面中的元件通過value屬 性和backing bean的字段關聯,這樣就有比較大的靈活性,頁面上的每個元件可以對應相同的backing bean,也可以對應不同的backing bean(當然本人認為在一般的應用中,乙個頁面上的元件還是都對應到乙個backing bean較好),而且在設計頁面的時候可以不考慮backing bean如何設計,可以在設計完頁面之後再考慮backing bean的實現問題。

3、關於資料驗證,struts可以採用在formbean中的驗證函式中進 行驗證,也可以使用validator進行驗證(關於這種驗證方法,本人沒有測試過,不知效果如何,希望有經驗的朋友指教!)。在jsf中,提供了一些標 準的validator.可以對輸入的資料做一些簡單的驗證,例如驗證數值資料的範圍,字段是否必填等。但其驗證的反饋資訊為英文。如果該資訊不能自定義 的化,那麼針對國內的應用就不太適合了,目前本人還沒有找到該反饋資訊是否能夠自定義的辦法。另外對於input型別的元件可以通過validator屬 性關聯到backing bean的乙個驗證方法上。在事件處理方法中進行驗證也是乙個辦法。

屬性與成員變數的區別(jsf與struts2)

private string username public string getusername public void setusername string username 在開發jsf或者struts2的時候,經常會寫上面的 於是我們在頁面中用el表示式可以訪問到我們的類屬性 usernam...

springMVC和struts的區別

1 接收引數的方法 spring使用形參接收資料,在使用時可以使用單例,建議使用單例 struts2使用成員變數接受資料,在使用時必須以多例使用 2 開發形式 springmvc基於方法開發 springmvc是將乙個請求的method和handler進行關聯繫結,乙個method對應乙個handl...

springmvc和struts的區別

區別1 struts2 的核心是基於乙個filter即strutspreparedandexcutefilter springmvc的核心是基於乙個servlet即dispatcherservlet 前端控制器 區別2 struts2是基於類開發的,傳遞的引數是通過類的屬性傳遞 屬性驅動和模型驅動 ...