En el marco JSF MVC, ¿quién es modelo, vista y controlador?
fuente
En el marco JSF MVC, ¿quién es modelo, vista y controlador?
Esto depende del punto de vista (juego de palabras).
En el panorama arquitectónico grande, su propio código JSF es el V :
M : dominio comercial / capa de servicio (por ejemplo, EJB / JPA / DAO)
V : su código JSF
C : FacesServlet
En la imagen del desarrollador, la V arquitectónica a su vez se puede dividir de la siguiente manera:
M - Entidad
V - Facelets / JSP página
C - Bean administrado
En la imagen del cliente más pequeña, el desarrollador V es a su vez divisible como se muestra a continuación:
M - Árbol de componentes JSF
V - Salida HTML renderizada
C - Cliente (navegador web)
En la imagen de JavaScript aún más pequeña, el cliente V es a su vez divisible como se muestra a continuación:
M - Árbol DOM HTML
V - Presentación visual
C - Funciones de escucha de eventos (interacción del usuario final y Ajax)
Entonces es básicamente una M (M (M (MVC) C) C) C;)
Tenga en cuenta que algunos principiantes e incluso algunos tutoriales —muy básicos— mezclan / copian / aplanan las propiedades de la entidad en el bean administrado, lo que efectivamente haría del controlador un modelo. No hace falta decir que este es un diseño deficiente (es decir, no un diseño MVC limpio).
Los fragmentos de código en las siguientes respuestas ilustran el enfoque MVC correcto:
En el libro The Definitive Guide to JSF in Java EE 8 , en el capítulo 8 "Backing beans", página 276, el siguiente diagrama de Venn se utiliza para ilustrar la posición del backing bean en el paradigma MVC dentro del contexto relevante para el desarrollador JSF. . Descargo de responsabilidad de derechos de autor: el libro está escrito por mí y la imagen es creada por mí.
<h:inputText value="#{register.username}">
lugar de<h:inputText value="#{register.user.name}">
.M odel sería tu
ManagedBean
La vista sería
jsp
,XHTML
(bueno, puede acomodar varias vistas aquí)C ontroller será
FacesServlet
Actualización, espero que esta imagen ayude más
fuente
FacesServlet
es un controlador, no puedo extenderlo. No puedo tener mis propios controladores ... Estoy de acuerdo con Shervin en que Managed Beans es el controlador. Shervin, ¿qué tal si publicas tu propia respuesta alternativa?FacesServlet
que controla.El servlet de caras gestiona el ciclo de vida de las caras, por lo que, en ese sentido, es el controlador combinado con su propio código el que puede ser llamado durante cada fase del ciclo de vida.
http://www.java-samples.com/images/jsf-lifecycle.gif
fuente
Java Server Faces es un marco web MVC donde los componentes MVC son los siguientes,
Modelo : es la clase de bean administrada anotada con @ManagedBean, que tiene propiedades para contener los datos y los respectivos getters y setters. La clase de bean administrado también puede contener la lógica empresarial, también conocidos como beans de respaldo, que pueden tener diferentes ámbitos como solicitud, sesión, aplicación.
Ver : la interfaz de usuario que se muestra al cliente, es decir, archivos .xhtml. Obtiene los datos de los beans administrados y se procesa como respuesta.
Controlador : javax.servlet.webapp.FacesServlet es la clase de controlador centralizado que es básicamente un servlet. Cualquier solicitud que llegue al JSF primero va al controlador FacesServlet. A diferencia del JSP en el que escribimos nuestra propia clase de controlador, en JSF el servlet controlador es una parte fija del marco y no lo escribimos.
Flujo MVC
fuente