You are on page 1of 39

Java Server Faces

M.B.W.

Objetivo
Desarrollar aplicaciones web como aplicaciones locales con Java Swing.

Cmo lo hace?
Gestionando las acciones del usuario de paginas HTML, traducindolas a eventos , envindolas al servidor y regenerando la pagina original reflejando los cambios.

JSF

Qu es JSF?
JSF es un Framework de trabajo para aplicaciones J2EE basadas en el patrn MVC. Caractersticas principales: Utiliza pginas JSP para generar las vistas, aadiendo una biblioteca de etiquetas propia para crear los elementos de los formularios HTML.

Caractersticas I
Asocia cada vista con un conjunto de objetos manejados por el controlador (managed beans) que facilitan la recogida, manipulacin y visualizacin de valores mostrados en los elementos de formularios. Introduce una serie de etapas en el proceso de la peticin : como la de validacin, reconstruccin de la vista, recuperacin de los valores de los elementos, etc.

Caractersticas II
Utiliza un sencillo fichero de configuracin para el controlador en formato xml. Es extensible, pudiendo crearse nuevos elementos de la interfaz o modificar los ya existentes. y lo que es ms importante:

Forma parte del estndar J2EE.

Por qu utilizarlo?

Nos permite desarrollar rpidamente aplicaciones dinmicas basadas en Java, creando pginas para las vistas muy sencillas.

Ventajas de JSF
El cdigo JSF con el que creamos las vistas (etiquetas jsp) es muy parecido al HTML estndar. Lo pueden utilizar fcilmente desarrolladores y diseadores web. JSF se integra dentro de la pgina JSP y se encarga de la recogida y generacin de los valores de los elementos de la pgina. JSF resuelve validaciones, conversiones, mensajes de error e internacionalizacin.

Mas ventajas
JSF es extensible, por lo que se pueden desarrollar nuevos componentes a medida. Tambin se puede modificar el comportamiento del Framework mediante APIs que controlan su funcionamiento.

Beneficios de JSF
Especificacin estndar, implementacin de distintos fabricantes. La programacin de la UI se realiza a travs de componentes y esta basada en eventos. Es muy flexible Separacin clara entre el comportamiento y la presentacin.

Como Funciona
Esta basado en un conjunto de pantallas que interactan con el usuario. Estas pantallas contienen textos, botones, imgenes, tablas y elementos de seleccin que el usuario modifica. La principal funcin del controlador JSF es asociar a las pantallas, las clases java que recogen la informacin, y que disponen de mtodos que responden a las acciones del usuario.

Como Funciona II
JSF nos resuelve de manera muy sencilla y automtica muchas tareas muestra datos al usuario en cajas de texto y tablas. Recoge los datos introducidos por el usuario en los campos del formulario. Controla el estado de los formularios segn el estado de la aplicacin, activando, ocultando o aadiendo y eliminando controles y dems elementos.

Como Funciona III


Realiza validaciones y conversiones de datos. Rellena campos, listas, combos y otros elementes a medida que el usuario va interactuando con la pantalla. Controla eventos (pulsaciones de teclas, botones y movimientos del ratn).

Elementos principales:
Pginas JSP - Formularios JSF. Pginas que generan las vistas de la aplicacin. Beans java - Que se conectan con los formularios JSF. Clases java Lgica de negocio y utilidades. Ficheros de configuracin, componentes a medida y otros elementos del framework. Resto de recursos de la aplicacin web: recursos estticos, javascript y otros elementos.

JSF vs Struts
JSF es posterior a TRUTS. Persigue el mismo objetivo : normalizar y estandarizar el desarrollo de aplicaciones web. Muy similares, ambos implementan la interfaz de usuario con paginas JSP.

JavaServer Faces o Struts?


Porque JSF?

Porque Struts?
Mas potente y extendido, Permite el acceso directo al controlador. Control de acceso por cada accion que realiza el usuario. Potente manejo de Layouts que permite crear plantillas reutilizables en multiples paginas. Realiza validaciones tanto en el lado servidor como cliente.

Clara separacin entre el comportamiento y la presentacin.

Basado en el modelo evento y listener(escucha).

Recogida de parmetros de manera ms sencilla que Struts,

Incorpora un lenguaje de expresiones que lo hace ms simple.

Modelo de conversion y validacion para convertir y validar componentes.

Forma parte del estandard J2EE.

Soporta la creacin de manejadores de eventos asociados a los componentes de la pgina.

IndicThreads.com Java Meet June 2006

Comparativa
Frameworks Atributos
Layout Management - Tiles support

Struts
SI SI SI SI

JSF

Validation Framework support

Control de eventos Soporta control de excepciones Transaction Management support Navegacion de paginas Tipos de conversiones

NO SI NO NO SI
IndicThreads.com Java Meet June 2006

SI SI SI, despues de la integracion con Spring SI SI

Qu es una aplicacin JSF?


Se ejecuta en un contenedor de servlets y contiene: Componentes JavaBeans. Oyentes de eventos. Paginas (JSP). Clases tipo beans para acceder a las bases de datos. Librerias de etiquetas personalizadas.

IndicThreads.com Java Meet June 2006

Participantes
Autores de Paginas
Lenguaje HTML, usaran exclusivamente la librera de etiquetas

Desarrolladores de aplicaciones
Programan: objetos del modelo, manejadores de eventos, validadores y navegacin de paginas

Escritores de componentes
Programar UI desde cero.

Vendedores de herramientas
Proporcionan herramientas para mejoran la tecnologa JSF.

Instalacion y requisitos
Kit de desarrollo de Java (JDK) Un servidor web (Tomcat, JBoss) Implementacion de referencia de JavaServer Faces

Casi todas las IDEs del Mercado soportan Java Server Faces.
Borland JBuilder Enterprise Eclipse with Exadel Studio Pro IDE Eclipse with Nitrox JSF IDE IBM Rational with JSF Support Macromedia Dreamweaver with JSTL & JSF extensions MyEclipse with JSF Designer Oracle's JDeveloper IDE Sun's Java Studio Creator IndicThreads.com Java Meet June 2006

IndicThreads.com Java Meet June 2006

MVC en JSF
Nos permite separar : La lgica de control (que cosas hay que hacer pero no como) La lgica de negocio (como se hacen las cosas) La lgica de presentacin (como interaccionar con el usuario)

Architectura MVC en JSF

IndicThreads.com Java Meet June 2006

MVC en JSF

Por favor, introduzca su nombre y password Nombre Password

Aceptar

Componentes necesarios
Dos paginas (index.jsp y Hola.jsp) Un Bean : Manejar datos de usuario (UsuarioBean.java) Archivo de configuracion : Recursos del Bean y reglas de Navegacion. (faceconfig.xml). Archivos necesarios para el servlet : web.xml

MVC: Modelo
El objeto que representa y trabaja directamente con los datos del programa:
Gestiona los datos y controla todas sus transformaciones. No tiene conocimiento de los diferentes controladores y/o vistas, ni siquiera contiene referencias a ellos.

MVC: Modelo
UsuarioBean.java
Public class UsuarioBean { Private String nombre; Private String password; //Atributo nombre public String getNombre() { return nombre;} Public void setNombre(String nuevoValor) {nombre = nuevoValor; } //Atributo password public String getPassword() { return password;} Public void setPassword(String nuevoValor) {password = nuevoValor; } }

MVC: Modelo
La comunicacin entre el modelo y el sistema JSF se realiza mediante el fichero: Faces-config.xml (managed-bean)
<managed-bean> <manes-bean-name>usuario</manages-bean-name> <manes-bean-class>UsuarioBean</manages-bean-class> <manes-bean-scope>session</manages-bean-scope> </managed-bean>

MVC: Vista
Objeto que maneja la presentacin visual de los datos gestionados por el modelo. Genera la representacin visual y muestra los datos.

MVC: Vista
index.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <f:view> <head> <title> Una simple aplicacin JavaServer Faces </title> </head> <body> <h:form> <h3>Por favor, introduzca su nombre y password.</h3>

MVC: Vista
<table> <tr> <td>Nombre:</td> <td> <h:inputText value="#{usuario.nombre}"/> </td> <tr> <td>Password:</td> <td> <h:inputSecret value="#{usuario.password}"/> </td> </table> <p> <h:commandButton value="Aceptar" action="login"/> </p> </h:form> </body> </f:view> </html>

MVC: Vista
JSF conecta la vista y el modelo mediante: <h:inputText value=#{usuario.nombre}/> El vinculo se realiza declarando el campo de texto (inputText) en la vista, recogiendo el valor del atributo nombre del bean llamado usuario.

MVC: Controlador
Objeto que proporciona significado a las ordenes del usuario, actuando sobre los datos representados por el modelo. Entra en accin cuando se realiza alguna operacin. Se comunica con el modelo y la vista a travs de una referencia al propio modelo.

MVC: Controlador
Acta mediante lneas de cdigo: <h:inputText value="#{usuario.nombre}"/> <h:inputSecret value="#{usuario.password}"/> <h:commandButton value="Aceptar" action="login"/>

MVC: Controlador
Y mediante reglas de navegacin contenidas en el fichero facesconfig.xml. <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>login<from-outcome> <to-view-id>/hola.jsp</to-view-id> <navigation-case> </navigation-rule> Y mediante la vista que establece la accin <h:commandButton value="Aceptar" action="login"/>

MVC: Controlador
Fichero web.xml
<web-app> <servlet> <servlet-name>Faces Servlet<servlet-name> <servlet-class>javax.faces.weapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet<servlet-name> <url-pattern>*.faces</url-pattern> <servlet-mapping> <welcome-file-list> <welocome-file>index.html</welcome-file> </welcome-file-list> <web-app>

MVC: Controlador
La directiva <servlet> establece el nico servlet de nuestra aplicacin, es el propio del Framework JSF. La directiva <servlet-mapping>indica la url para acceder al servlet definido. <welcome-file-list> se establece la pagina de inicio de la aplicacin. La cual se redirecciona a index.faces.

Conclusin

Para un proyecto nuevo, la eleccin es sencilla, como dice el propio creador de Struts: utiliza JSF.

You might also like