Risposte:
Questo dipende dal punto di vista (gioco di parole).
Nella grande immagine architettonica, il tuo codice JSF è il V :
M - Dominio aziendale / Livello di servizio (ad esempio EJB / JPA / DAO)
V - Il tuo codice JSF
C - FacesServlet
Nell'immagine dello sviluppatore, la V architettonica è a sua volta divisibile come di seguito:
M - Entità
V - Pagina Facelets / JSP
C - Bean gestito
Nell'immagine del cliente più piccola, lo sviluppatore V è a sua volta divisibile come di seguito:
M - Albero dei componenti JSF
V - Output HTML renderizzato
C - Client (browser web)
Nell'immagine JavaScript ancora più piccola, il client V è a sua volta divisibile come di seguito:
M - Albero DOM HTML
V - Presentazione visiva
C - Funzioni listener di eventi (interazione con l'utente finale e Ajax)
Quindi è fondamentalmente una M (M (M (MVC) C) C) C;)
Si noti che alcuni principianti e persino alcuni tutorial —molto di base— mescolano / copiano / appiattiscono le proprietà dell'entità nel bean gestito, il che renderebbe effettivamente il controller un modello. Inutile dire che questo è un design scadente (cioè non un design MVC pulito).
Gli snippet di codice nelle risposte seguenti illustrano l'approccio MVC corretto:
Nel libro The Definitive Guide to JSF in Java EE 8 , nel capitolo 8 "Backing bean", pagina 276, il diagramma di Venn sottostante viene utilizzato per illustrare la posizione del backing bean nel paradigma MVC all'interno del contesto rilevante per lo sviluppatore JSF . Dichiarazione di non responsabilità sul copyright: il libro è stato scritto da me e l'immagine è stata creata da me.
<h:inputText value="#{register.username}">
invece di <h:inputText value="#{register.user.name}">
.
M odello sarebbe tuoManagedBean
La vista sarebbe jsp
, XHTML
(beh, puoi ospitare varie viste qui)
C ontroller saràFacesServlet
Aggiorna, spero che questa immagine aiuti di più
FacesServlet
è un controller di quanto non posso estenderlo. Non posso avere i miei controller ... Concordo con Shervin sul fatto che Managed Beans sia Controller. Shervin, che ne dici di pubblicare la tua risposta alternativa?
FacesServlet
che controlla.
Il servlet delle facce gestisce il ciclo di vita delle facce, quindi in questo senso è il controller combinato con il tuo codice che può essere chiamato durante ogni fase del ciclo di vita
Java Server Faces è un framework Web MVC in cui i componenti MVC sono i seguenti,
Modello : è la classe bean gestita annotata con @ManagedBean, che ha proprietà per contenere i dati e rispettivi getter e setter. La classe bean gestiti può contenere anche la logica di business, noti anche come backing bean che possono avere ambiti diversi come richiesta, sessione, applicazione.
Visualizza : l'interfaccia utente mostrata al client, ovvero i file .xhtml. Ottiene i dati dai bean gestiti e viene visualizzato come risposta.
Controller : javax.servlet.webapp.FacesServlet è la classe controller centralizzata che è fondamentalmente un servlet. Qualsiasi richiesta che arriva al JSF va prima al controller FacesServlet. A differenza del JSP in cui scriviamo la nostra classe controller, in JSF il servlet del controller è una parte fissa del framework e non lo scriviamo.
Flusso MVC