簡體   English   中英

可用的JSF MVC組件

[英]Available JSF MVC components

我是基於Java的Web編程的新手,並且正在嘗試從頭開始學習JSF。 我聽說JSF解釋為一個完整的MVC解決方案,Facelets是一種純XML技術,包含MVC體系結構的“視圖”組件。

因此,不知道有什么更好的地方,這使我問:每個組件都有哪些選擇/替代方案? 對於這3種(模型,視圖和控制器)中的每一種,都有哪些工具/ API / libs /技術可與JSF一起使用。 例如,如果正確理解View基礎,則JSP是Facelets的(舊的/過時的)替代方法。 還有其他嗎? 那么Model組件呢:我有哪些選擇? 控制器?

再一次,只是有興趣暫時將所有內容保留在JSF的保護下:如果該組件作為JSF解決方案的一部分是兼容的,我想聽聽它!

感謝您的任何建議!

令我驚訝的是BalusC還沒有給出他令人作嘔的完整答案之一。 我懷疑他會解決這個問題,當他這樣做時,我會投票支持,因為它很棒,因此請不要立即接受我的回答。 同時,以下是一些想法:

JSF是完整的MVC堆棧,重點是VC。 您已經正確設置了JSP / Facelets。 簡而言之,不要使用JSP。 使用Facelets。 它們是JSF 2的默認視圖技術。它們基於xml,可以防止您在JSF生命周期和JSP生命周期之間的“有趣”交互中傷害自己。

您將編寫Java類和導航規則來填充JSF中的控制器角色。 您可以將JSF托管bean用於您的服務,也可以使用諸如Spring之類的其他框架,但是您將實現特定的類以用作JSF中的控制器。

至於模型……好吧,任何好的MVC框架都會讓模型自行處理。 模型不應該知道或關心模型處於哪個視圖。希望您可以使用該模型並使用從JSF到Wicket到Vaadin的任何內容將其顯示在網頁中,然后在桌面應用程序或基於RESTful JSON的模型中使用它api。

我建議您通過以下鏈接了解JSF。

我認為您的理解是正確的。

我想說的是,JSF占據了控制器的大部分部分。 但是,還有其他與JSF兼容的庫。 例如,您可以將Spring WebFlow與JSF結合使用以獲得更強大的導航功能。

當涉及到模型時,JSF並不是很麻煩。 理想情況下,在域模型中沒有使用JSF的任何痕跡(例外是JSF提供了可以選擇使用的注釋,例如@ManagedBean)。 這意味着您可以自由使用所需的任何庫。 如果需要,可以使用Spring IOC或EJB,也可以在普通的舊Java對象中編碼整個模型。

話雖如此,我想強調指出,JSP並不是過時的。 正如digitaljoel指出的那樣,Facelets已取代JSP成為JSF中的視圖技術,但在其他框架中JSP仍然有效。 尚未達成共識,包括Facelets的JSF比JSP(以及另一個Web框架)“更好”; 並且JSF尚未成為行業標准。

使用JSF編寫Web應用程序更類似於編寫桌面應用程序,因為它們已經抽象出許多請求-響應處理。 客戶端每次執行請求時都不會調用特定的方法,而是每個請求都會經過您無法完全控制的生命周期。 不鼓勵直接與HttpServletRequest進行交互。

忽略Web的請求-響應性質會增加請求的復雜性,並與另一個增長趨勢沖突:嚴重依賴Javascript的富Web應用程序。 視圖邏輯的職責從服務器移到瀏覽器,瀏覽器使用瘦HTTP API使用Ajax與服務器交互。

關鍵是,JSF並不是學習和忽略其他所有內容所需的最終框架。 對於某些應用程序,它可能是正確的選擇,但並非對所有應用程序都是正確的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM