Arquitectura JSF


Arquitectura JSF

Java Server Faces es un marco de aplicación web permite crear componentes de interfaz de usuario basado en el popular diseño del patrón MVC (entre otros). El marco nos proporciona una forma sencilla de gestionar aplicaciones web de ciclo de vida y un conjunto de componentes ricos con el manejo de eventos y representación de componente (ajax), permitiendo a los desarrolladores concentrarse en la creación de la aplicación principal.

FacesServlet


La arquitectura de JSF define un Servlet llamado FacesServlet que se encarga de cumplir tres funciones:

  • Asistir a todas las solicitudes de página JSF. 
  • Mantener el control de navegación de la aplicación web y asociar cada página JSF para su ManagedBean correspondiente, obtener el apoyo de un archivo de configuración (faces-config.xml).
  • Representación de componentes JSF.

El marco JSF define un conjunto de bibliotecas de etiquetas que permite crear contenido estático dinámicamente para una página JSF es esencialmente una JSP con bibliotecas de etiquetas JSF.
Los ManagedBean proporcionar datos para que cada JSF se pueda representar por FacesServlet así como la aplicación de métodos que permiten ejecutar acciones sobre los componentes de negocio, con el fin de obtener o modificar la información sobre el modelo de datos.

JSF dentro del patrón MVC

  1. FacesServlet y archivo de configuración (faces-config.xml) encajan dentro del controlador, ya que se encargan de enviar las peticiones y definir la navegación
  2. Las páginas JSP y bibliotecas de etiquetas JSF caber dentro de la Vista porque están a cargo de construir la interfaz de usuario 
  3. Los ManagedBean (Backing beans) caben dentro del modelo, ya que permiten conocer el estado del modelo. 

Mira el siguiente diagrama:



Observaciones:
  • La integración entre JSP y JSF tiene problemas por lo que recomendamos que utilice Facelets que tiene un proceso de compilación más rápido que JSP, entre otras ventajas.
  • JSF 2.0 es la última versión del marco que tiene nuevas ventajas para el desarrollo de aplicaciones, por ejemplo, esta versión no es necesario el uso de faces-config.xml para definir los ManagedBean, que fue sustituido por anotaciones.

Arqutectura

  • Model: sería su ManagedBean + EJB + Web Service + Legacy system +… 
  • View: sería jsp + XHTML + HTML + … 
  • Controller: será FacesServlet 



Propiedades

Todos los atributos y propiedades pueden ser dinámicamente calculados:




Permite llamar a un método específico de un objeto particular para la solicitud de un proceso; por ejemplo, grabar una orden de compra con un clic sobre un botón.






Mejores Prácticas

View
  • A todas las páginas JSF con contenido dinámico asociar un ManagedBean, con scope request 
  • Todos los ManagedBean de la View derivan de la clase BasicView, que proporciona métodos comunes que se utilizan en todas las páginas JSF. 
  • Páginas JSF con contenido estático, no tiene asociada un ManagedBean. En su lugar sólo la BasicView será utilizada. 
controller
  • Normalmente no es necesario programar una clase de controlador especial para la vista. JSF se hace cargo de la validación y actualización de los datos del modelo. 
  • Una excepción podría ser, si los datos del modelo debe ser cambiado especialmente debido a una acción del usuario y esto no debe ser codificada en la clase de acción, porque quiere separarlo de la lógica de negocio. 
Otros
  • Siempre utilizar Wrappers (Integer, Boolean, otros) en lugar de tipos primitivos 
  • Utilice para la navegación sencilla página, utilice para enviar el formulario y realiza validación también. 
  • Minimizar el número de managed beans con scope session. 
  • Añadir immediate=”true” a botones tipo “Cancelar”, “Volver”,… para que se salten las validaciones. 

Generales:















No hay comentarios: