回答:
これは、見方によって異なります(意図的なしゃれ)。
大きなアーキテクチャ図では、独自のJSFコードはVです。
M-ビジネスドメイン/サービスレイヤー(EJB / JPA / DAOなど)
V -JSFコード
C -FacesServlet
開発者の写真では、建築Vは次のように分割できます。
M-エンティティ
V -Facelets / JSPページ
C-マネージドBean
小さなクライアントの図では、開発者Vは次のように分割できます。
M -JSFコンポーネントツリー
V-レンダリングされたHTML出力
C-クライアント(ウェブブラウザ)
さらに小さいJavaScript画像では、クライアントVは次のように分割できます。
M -HTML DOMツリー
V-ビジュアルプレゼンテーション
C-イベントリスナー関数(エンドユーザーインタラクションとAjax)
つまり、基本的にはM(M(M(MVC)C)C)Cです;)
いくつかの初心者およびいくつかの(非常に基本的な)チュートリアルでも、マネージドBean内のエンティティのプロパティを混ぜ合わせる/コピー/フラット化することに注意してください。これにより、コントローラーが効果的にモデルになります。言うまでもなく、これは貧弱な設計です(つまり、クリーンなMVC設計ではありません)。
次の回答のコードスニペットは、正しいMVCアプローチを示しています。
本「Java EE 8におけるJSFの決定的なガイド」の第8章「バッキングBean」、276ページでは、下のベン図が、JSF開発者に関連するコンテキスト内のMVCパラダイムにおけるバッキングBeanの位置を示すために使用されています。 。著作権の免責事項:本は私が作成し、写真は私が作成しました。
<h:inputText value="#{register.username}">
代わりにを使用します<h:inputText value="#{register.user.name}">
。
Mの odelは、あなたのだろうManagedBean
V iewはjsp
、XHTML
(まあここでさまざまなビューに対応できます)
Cの ontrollerになりますFacesServlet
更新、この画像がさらに役立つことを願って
FacesServlet
私がそれを拡張することができないよりもコントローラである場合。自分のコントローラーは持てません...マネージドBeanがコントローラーであるというシャービンに同意します。シャービン、あなた自身の代わりの答えを投稿してはどうですか?
FacesServlet
支配している覆面です。
FacesサーブレットはFacesライフサイクルを管理するため、その意味では、各ライフサイクルフェーズ中に呼び出される可能性がある独自のコードと組み合わされたコントローラーです
Java Server FacesはMVC Webフレームワークであり、MVCコンポーネントは次のとおりです。
モデル -@ManagedBeanで注釈が付けられたマネージドBeanクラスであり、データとそれぞれのゲッターおよびセッターを保持するプロパティがあります。マネージドBeanクラスには、ビジネスロジックを含めることもできます。これらは、リクエスト、セッション、アプリケーションなどのさまざまなスコープを持つことができるバッキングBeanとも呼ばれます。
表示 -クライアントに表示されるユーザーインターフェイス、つまり.xhtmlファイル。管理対象Beanからデータを取得し、応答としてレンダリングされます。
コントローラ -javax.servlet.webapp.FacesServletは、基本的にはサーブレットである集中コントローラクラスです。JSFに送られるリクエストは、最初にFacesServletコントローラに送られます。独自のコントローラークラスを作成するJSPとは異なり、JSFではコントローラーサーブレットはフレームワークの固定部分であり、作成しません。
MVCフロー-