Odpowiedzi:
To zależy od punktu widzenia (intencja gry słów).
W dużym obrazie architektonicznym Twój własny kod JSF to V :
M - Domena biznesowa / Warstwa usług (np. EJB / JPA / DAO)
V - Twój kod JSF
C - Serwlet FacesServlet
Na zdjęciu dewelopera architektoniczne V jest z kolei podzielne, jak poniżej:
M - Jednostka
V - Facelets / JSP page
C - Managed bean
Na mniejszym obrazie klienta programista V jest z kolei podzielny, jak poniżej:
M - Drzewo komponentów JSF
V - Wyrenderowane wyjście HTML
C - Klient (przeglądarka internetowa)
Na jeszcze mniejszym obrazku JavaScript klient V jest z kolei podzielny, jak poniżej:
M - Drzewo DOM HTML
V - Prezentacja wizualna
C - Funkcje nasłuchiwania zdarzeń (interakcja użytkownika końcowego i Ajax)
Więc jest to w zasadzie M (M (M (MVC) C) C) C;)
Zauważ, że niektóre startery, a nawet niektóre - bardzo podstawowe - samouczki łączą / kopiują / spłaszczają właściwości jednostki w zarządzanym komponencie bean, co skutecznie uczyniłoby kontroler modelem. Nie trzeba dodawać, że jest to kiepski projekt (tj. Nie jest to czysty projekt MVC).
Fragmenty kodu w poniższych odpowiedziach ilustrują właściwe podejście MVC:
W książce The Definitive Guide to JSF in Java EE 8 , w rozdziale 8 „Backing beans”, strona 276, poniższy diagram Venna jest używany do zilustrowania pozycji fasoli podkładowej w paradygmacie MVC w kontekście odpowiednim dla programisty JSF . Zastrzeżenie dotyczące praw autorskich: książka jest napisana przeze mnie, a zdjęcie jest wykonane przeze mnie.
<h:inputText value="#{register.username}">
zamiast <h:inputText value="#{register.user.name}">
.
M odel byłby TwoimManagedBean
V iew byłoby jsp
, XHTML
(dobrze można pomieścić różne widoki tutaj)
C ontroller będzieFacesServlet
Zaktualizuj, mam nadzieję, że to zdjęcie pomoże bardziej
FacesServlet
jest kontrolerem, to nie mogę go rozszerzyć. Nie mogę mieć własnych kontrolerów ... Zgodziłbym się z Shervinem, że Managed Beans to kontroler. Shervin, co powiesz na opublikowanie własnej alternatywnej odpowiedzi?
FacesServlet
który kontroluje.
Aplet twarzy zarządza cyklem życia twarzy, więc w tym sensie jest to kontroler połączony z własnym kodem, który może zostać wywołany podczas każdej fazy cyklu życia
Java Server Faces to platforma internetowa MVC, w której składniki MVC są następujące:
Model - jest to zarządzana klasa bean z adnotacją @ManagedBean, która ma właściwości do przechowywania danych oraz odpowiednich metod pobierających i ustawiających. Zarządzana klasa bean może również zawierać logikę biznesową. Są one również znane jako zapasowe komponenty bean, które mogą mieć różne zakresy, takie jak żądanie, sesja, aplikacja.
Widok - interfejs użytkownika wyświetlany klientowi, tj. Pliki .xhtml. Pobiera dane z zarządzanych komponentów bean i są renderowane jako odpowiedź.
Kontroler - javax.servlet.webapp.FacesServlet to klasa scentralizowanego kontrolera, która jest w zasadzie serwletem. Każde żądanie, które przychodzi do JSF, najpierw trafia do kontrolera FacesServlet. W przeciwieństwie do JSP, w którym piszemy własną klasę kontrolera, w JSF serwlet kontrolera jest stałą częścią frameworka i nie piszemy go.
Przepływ MVC