Dans le cadre JSF MVC, qui est modèle, vue et contrôleur?
la source
Dans le cadre JSF MVC, qui est modèle, vue et contrôleur?
Cela dépend du point de vue (jeu de mots intentionnel).
Dans la grande image architecturale, votre propre code JSF est le V :
M - Domaine d'activité / Couche de service (par exemple EJB / JPA / DAO)
V - Votre code JSF
C - FacesServlet
Dans l'image du développeur, le V architectural est à son tour divisible comme ci-dessous:
M - Entité
V - Facelets / page JSP
C - Bean géré
Dans l'image plus petite du client, le développeur V est à son tour divisible comme ci-dessous:
M - Arborescence des composants JSF
V - Sortie HTML rendue
C - Client (navigateur Web)
Dans l'image JavaScript encore plus petite, le client V est à son tour divisible comme ci-dessous:
M - Arbre DOM HTML
V - Présentation visuelle
C - Fonctions d'écouteur d'événements (interaction de l'utilisateur final et Ajax)
Donc c'est fondamentalement un M (M (M (MVC) C) C) C;)
Notez que certains démarreurs et même certains tutoriels - très basiques - mêlent / copient / aplatissent les propriétés de l'entité dans le bean géré, ce qui ferait effectivement du contrôleur un modèle. Inutile de dire que c'est une mauvaise conception (c'est-à-dire pas une conception MVC propre).
Les extraits de code dans les réponses suivantes illustrent la bonne approche MVC:
Dans le livre The Definitive Guide to JSF in Java EE 8 , au chapitre 8 «Backing beans», page 276, le diagramme de Venn ci-dessous est utilisé pour illustrer la position du backing bean dans le paradigme MVC dans le contexte pertinent pour le développeur JSF . Avis de non-responsabilité du droit d'auteur: le livre est écrit par moi et l'image est créée par moi.
<h:inputText value="#{register.username}">
au lieu de<h:inputText value="#{register.user.name}">
.M odel serait votre
ManagedBean
V iew serait
jsp
,XHTML
(eh bien, vous pouvez accueillir différentes vues ici)Le contrôleur sera
FacesServlet
Mettre à jour, j'espère que cette image vous aidera davantage
la source
FacesServlet
c'est un contrôleur que je ne peux pas l'étendre. Je ne peux pas avoir mes propres contrôleurs ... Je suis d'accord avec Shervin pour dire que Managed Beans est le contrôleur. Shervin, que diriez-vous de publier votre propre réponse alternative?FacesServlet
qui contrôle.Le servlet de faces gère le cycle de vie des faces de sorte qu'en ce sens, c'est le contrôleur combiné avec votre propre code qui peut être appelé à chaque phase du cycle de vie
http://www.java-samples.com/images/jsf-lifecycle.gif
la source
Java Server Faces est un framework Web MVC où les composants MVC sont les suivants,
Modèle - Il s'agit de la classe de bean géré annotée avec @ManagedBean, qui possède des propriétés pour contenir les données et les getters et setters respectifs. La classe de bean géré peut également contenir la logique métier. Ils sont également appelés backing beans qui peuvent avoir différentes étendues telles que request, session, application.
Afficher - L'interface utilisateur présentée au client, c'est-à-dire les fichiers .xhtml. Il obtient les données des beans gérés et il est rendu en tant que réponse.
Controller - javax.servlet.webapp.FacesServlet est la classe de contrôleur centralisée qui est essentiellement un servlet. Toute demande adressée au JSF est d'abord envoyée au contrôleur FacesServlet. Contrairement à la JSP dans laquelle nous écrivons notre propre classe de contrôleur, dans JSF, le servlet de contrôleur est une partie fixe du framework et nous ne l'écrivons pas.
Flux MVC-
la source