Вы находитесь на странице: 1из 5

JAVA SERVER FACES

Juan Carlos Gonzlez


Universidad Nacional de Loja
jcgonzalezo@unl.edu.ec

II. INTRODUCCION
El desarrollo web se ha desarrollado a medida que ha evolucionado Internet por tal razn la bsqueda e implementacin de nuevas tecnologas para el desarrollo es indispensable en la actualidad.

III. DESARROLLO DE CONTENIDOS A. Que es JSF


Java Server Faces (JSF) es un framework de trabajo para el desarrollo de aplicaciones web dinmicas basadas en Java y en el patrn MVC (modelo, vista, controlador). Los principales componentes de la tecnologa JavaServer Faces son: Un API y una implementacin de referencia para: representar componentes UI y manejar su estado; manejo de eventos, validacin del lado del servidor y conversin de datos; definir la navegacin entre pginas; soportar internacionalizacin y accesibilidad; y proporcionar extensibilidad para todas estas caractersticas. Una librera de etiquetas Java Server Pages (JSP) personalizadas para dibujar componentes UI dentro de una pgina JSP.

La creacin de aplicaciones basadas en el patrn MVC se ve facilitada por el uso de marcos de trabajo (frameworks). Un marco de trabajo es una estructura o el esqueleto que nos permiten implementar las capas de nuestra aplicacin. Adems este patrn MVC nos permite tener una real separacin de la lgica de negocio y la presentacin de las aplicaciones web. Existen en la actualidad muchos frameworks para el desarrollo web sin embargo el uso de JSF nos puede aportar un sin nmeros de beneficios y herramientas a la hora de crear aplicaciones web, entre la cual podemos destacar la rica librera de etiquetas para la elaboracin de interfaces graficas de usuario, el API, validadores etc. El mundo del desarrollo web es enorme, sin embargo empezar con JSF nos abrir la pauta para poder meternos de lleno en el mismo , y avanzar posteriormente en nivel de dificultad.

II. RESUMEN
El presente trabajo tiene por objetivo hacer un estudio del framework Java Server Faces(JSF), tecnologa basada en el patrn modelo, vista controlador que pretende normalizar, estandarizar y dinamizar el desarrollo de aplicaciones web basadas en java, una de sus principales ventajas respecto a otros framewoks es que a la hora de desarrollar interfaces de usuario, estas se desarrollan de igual manera a como se lo hace con el swing de java adems del uso del lenguaje de programacion java y xhtml(integracin de html y xml) para poder codificar y la enorme flexibilidad que nos otorga para crear componentes. Analizaremos y haremos una conceptualizacin terica de todo lo relacionado a JSF como por qu usar JSF en nuestras aplicaciones web Java, cmo usar JSF, su funcionamiento, las etiquetas JSF, los managed beans, la navegacin entre pginas, el ciclo de vida JSF , validadores, conversores etc. Con lo que se espera llegar a una ptima comprensin de JSF.

Este modelo de programacin bien definido y la librera de etiquetas para componentes UI facilita de forma significativa la tarea de la construccin y mantenimiento de aplicaciones Web con UIs del lado del servidor. 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. Algunos de los beneficios que nos ofrece esta tecnologa son: Tratar el desarrollo de interfaces de usuario de una forma similar a Swing, Visual Basic o Delphi, donde la programacin del interfaz se hacer a travs de componentes y basada en eventos. JSF es muy flexible. Por ejemplo nos permite crear nuestros propios componentes, o crear nuestros propios render para pintar los componentes segn nos convenga. La tecnologa JavaServer Faces permite construir aplicaciones web que introducen realmente una separacin entre el comportamiento y la presentacin, permitiendo a cada miembro del equipo de desarrollo de

una aplicacin Web enfocarse en su parte del proceso de desarrollo

From-outcome Representa el evento que dispara la transicin.

B. Configuracin de Beans en JSF


Los beans son clases java que se asocian a los JSF para poder permitir separar la presentacin y la lgica de negocio en el desarrollo de una aplicacin web. Se referencian en el fichero de configuracin de JSF en el apartado de managed beans. La configuracin de los beans establece el nombre con el que se invocan sus acciones en las pginas jsp y la ruta completa del paquete en el que se encuentra la clase que representa el backing bean. El archivo de configuracin ms comnmente usado es WEB-INF/faces-config.xml. Un bean se define con una etiqueta managed-bean al comienzo del fichero faces-config.xml. Bsicamente se debe especificar nombre del bean con la etiqueta <managed-bean-name> Ser necesario aadir un bloque <managed-bean> por cada bean que se quiera sea gestionado por el framework. Nombre cualificado de la clase a la que pertenece el bean.<managedbean-class> mbito del bean siendo sus posibles valores: request, session y application (peticin, sesion,aplicacion) con la etiqueta <managed-bean-scope> Por ejemplo, para definir un bean llamado usuario, que est en la clase Usuario Bean y con un mbito de sesin, sera[1]: <managed-bean> <managed-bean-name>usuario</managed-bean-name> <managed-bean-class>UsuarioBean</managed-beanclass> <managed-bean-scope>session</managed-bean-scope> </managed-bean>

To-view-id indica el id de la vista a la que pasamos

Cada regla de navegacin define cmo ir de una pgina (especificada en el elemento from-view-id) a otras pginas de la aplicacin. El elemento navigationrule puede contener cualquier nmero de elemento navigation-case, cada uno de los cuales define la pgina que se abrir luego (definida por to-view-id) basndose en una salida lgica (definida mediante from-outcome). La salida se puede definir mediante el atributo action del componente UICommand que enva el formulario. Salidas tpicas: success: Failure: Logon: el usuario necesita logearse primero, IR a pagina de logon hubo algo mal, ir a una pgina de error. todo ocurri correctamente.

No result: la bsqueda no encontr nada. Ir a la pagina de bsqueda de nuevo

C. Configuracin de Navegacin en JSF


El desarrollador de la aplicacin define la navegacin por la aplicacin mediante el fichero de configuracin, faces-config.xml. Las reglas de navegacin en JSF hacen referencia al control de navegacin entre pginas, es decir cmo ir de una pgina a otra y viceversa, en JSF la configuracin de navegacin se la realiza en el controlador 1) Elementos de la navegacin From-view-id Indica la pgina origen de la request.

2) Ejemplo configuracin de navegacion Como especificamos anteriormente las reglas de navegacin indican a que pgina ir tras otra pgina. En este caso la navegacin es simple, tras pulsar el botn Aceptar, navegamos desde index.jsp hasta hola.jsp. <faces-config> <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from -outcom e>login</from-outcome> <to-view-id>/hola.jsp</to-view-id>

From-action indica el action del que procede y que da su valor.

</navigation-case> </navigation-rule>

UISelectMany: Permite al usuario seleccionar varios tems de un grupo de tems. Esta clase es una subclase de UIInput. UISelectOne: Permite al usuario seleccionar un tem de un grupo de tems. Esta clase es una subclase de UIInput. Entre las etiquetas bsicas ms usadas tenemos: h:commandButton. Un botn al que podemos asociar una accin. h:commandLink. Un enlace hipertexto al que podemos asociar una accin. h:dataTable. Crea una tabla de datos dinmica con los elementos de una propiedad de tipo Array o Map del bean. h:form. Define el formulario JSF en la pgina JSPh:graphicImage. Muestra una imagen jpg o similar. h:inputHidden. formulario. Incluye un campo oculto del

<managed-bean> <managed-bean-name>usuario</managed-bean-name> <managed-bean-class>UsuarioBean</managed-beanclass> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config> El valor de from-outcome (login), indica la accin que se debe producir en la pgina from-view-id (index.jsp) para navegar al destino representado por to-view-id (hola.jsp). La accin es un nombre que se da a los botones de un formulario; en nuestro caso, la pgina index.jsp inclua la etiqueta: <h:commandButton value="Aceptar" action="login"/>[2]

D. Etiquetas JSF
JSF dispone de un conjunto bsico de etiquetas que permiten crear fcilmente componentes dinmicos en las pginas web. El conjunto de clases de componentes UI incluido en la ltima versin de JavaServer Faces es: UICommand: Representa un control que dispara actions cuando se activa. UIForm: Encapsula un grupo de controles que envan datos de la aplicacin. Este componente es anlogo a la etiqueta form de HTML. UIGraphic: Muestra una imagen. UIInput: Toma datos de entrada del usuario. Esta clase es una subclase de UIOutput. UIOutput: Muestra la salida de datos en un pgina. UIPanel: Muestra una tabla. UISelectItem: Representa un slo tem de un conjunto de tems. UISelectItems: Representa un conjunto completo de tems. UISelectBoolean: Permite a un usuario seleccionar un valor booleano en un control, seleccionndolo o deseleccionndolo. Esta clase es una subclase de UIInput.

h:inputSecret . Incluye un campo editable de tipo contrasea (no muestra lo que se escribe) h:inputText. Incluye un campo de texto normal. h:inputTextarea. Incluye un campo de texto multilnea. h:message. Imprime un mensaje de error en la pgina (si se ha producido alguno). h:messages. Imprime varios mensajes de error en la pgina, si se han producido. h:outputFormat. Muestra texto parametrizado. Utiliza la clase java.text.MessageFormat de formateo. h:outputLabel. Muestra un texto fijo. h:outputLink. Crea un enlace hipertexto. h:outputText:Muestra una linea de texto h:panelGrid. Crea una tabla con los componentes incluidos en el panelGrid. h:panelGroup. Agrupa varios componentes para que cierto componente los trate como un nico componente (por ejemplo para meter varios componentes en una celda de un panelGrid. h:selectBooleanCheckbox. Crea una casilla con dos estados: activado y desactivado. h:selectManyCheckbox. Crea un conjunto de casillas activables.

h:selectManyListbox. Crea una lista que permite seleccionar mltiples elementos. h:selectManyMenu. Crea una lista desplegable de seleccin mltiple. h:selectOneListbox. Crea una lista en la que se puede seleccionar un nico elemento. h:selectOneMenu. Crea una lista desplegable de seleccin. h:selectOneRadio. Crea una lista de botones, redondos normalmente, excluyentes[3].

Podramos agrupar las validaciones en cuatro tipos bien diferenciados: - Validaciones estndar: Este tipo de validaciones son las ms bsicas, y se realizan a nivel de view, en el jsp. Ejemplos de este tipo de validaciones son comprobar que un valor este entre un determinado rango, comprobar la longitud del valor introducido, etc. Entre los tipos de validadores tenemos: f:validateDoubleRange: valida un valor doubl dentro de un rango f:validateLongRange: valida un valor long dentro de un rango f:validateLength: valida un String dentro de un nmero mnimo y un nmero mximo de caracteres - Validaciones en el backing bean: Este tipo de validaciones suelen ser un poco ms complejas que las anteriores. Y al realizarse en el backing pueden tratarse de validaciones mltiples que tengan en cuenta valores de otros campos del formulario. - Validaciones en la capa de negocio, a nivel de aplicacin: Este tipo de validaciones tratan de validar un proceso de nuestra aplicacin, se trata de validar el proceso que se realizar al rellenar el formulario. Es decir, en este tipo de validaciones ms que validar que los datos introducidos sean correctos, lo que se comprueba es que se pueda hacer una determinada tarea con esos datos. - Validaciones con nuestro propio Validator: Este tipo de validadores es frecuente usarlos cuando tenemos un tipo de campo que hay que validar y que se repite con frecuencia en diferentes formularios de nuestra aplicacin, como podra ser validar un NIF o un nmero de cuenta bancaria, etc[4].

E. Conversores en JSF
Una de los muchos mecanismos que nos proporciona JSF de forma automtica para el desarrollador es el de la conversin. La conversin es el proceso a travs del cual se transforman los datos ingresados por el usuario en la forma Web en los tipos de datos que mapean en sus correspondientes variables de su bean. Es decir, los datos que proporciona el usuario, manejados como cadenas de texto, se transforman en int, Date o segn sea el tipo de dato que se ha definido para cada uno de ellos en el bean especificado, y as mismo volver a convertir a cadena en caso de que se quiere extraer informacin previamente ya guardada. JSF invoca a los Conversores antes de efectuar las validaciones y por lo tanto antes de aplicar los valores introducidos a las propiedades del bean. En el caso de que un dato tipo cadena no se corresponda con el tipo JAVA apropiado, el Conversor correspondiente lanzar un ConversionException y el componente se marcar como invalidado. JSF nos proporciona los siguientes conversores: BigDecimalConverter, BigIntegerConverter, NumberConverter,IntegerConverter,ShortConverter,Byt eConverter,CharacterConverter,FloatConverter,Double Converter,BooleanConverter,DateTimeConverter Para hacer uso de los conversores usaremos el Atributo o Propiedad converter o el Tag f:converter

G. Ciclo de Vida en JSF


1. Restore view(Restaurar los componentes de la vista): En esta etapa el controlador construye en memoria la estructura de componentes de la pgina 2. Apply request values(Aplicar los valores de peticion): Se leen los valores de la request(objeto implincito que permite realizar peticiones con parmetros) y se aplican sobre los componentes. En este momento es cuando se llama a los converters. Si hay algn error en la conversin se ir directamente a la fase render response. Si un componente tiene immediate=true su validacin (y el procesamiento de los eventos provocados por esa validacin) se har en esta fase . 3. Process validations(Procesamiento de las validaciones): se validan todos los componentes (todos los que tienen immediate=false, ya que los que lo tienen a true ya se validaron en la fase anterior). Si falla alguna de las validaciones se ir directamente a la fase render response.

F. Validadores en JSF
El proceso de validacin se asegura que el dato introducido en el correspondiente componente es correcto segn la lgica de la aplicacin, de acuerdo a ciertas reglas especificadas para cada uno de estos, como pueden ser la longitud mnima y mxima para un campo .El proceso de validacin ocurre antes de que el FrameWork asigne los valores introducidos en el formulario a las propiedades del bean y justo despus de que se hayan aplicado las conversiones, en el caso de que haya. Las validaciones aseguran que un dato introducido en un formulario JSF tenga un valor correcto, cada componente JSF que reciba datos de entrada puede tener asociado 1 o ms validadores

4. Update model values(Actualizar los valores del modelo): Los valores ledos y validados son cargados en los beans. 5. Invoke application(Invocacin a la aplicacin): Se invoca a los mtodos de los beans de la pgina. Si es necesario se realiza la navegacin 6. Render response(Generacin de la pgina): En esta fase se genera la pgina que ser enviada al usuario con todos sus elementos y valores actualizados[1].

Los usuarios que gestiona la aplicacin se clasifican en: Desarrollo, a este grupo pertenecern los informticos que se encargan de desarrollar y mantener las aplicaciones web. CAU, personal perteneciente al servicio de informtica que se encargan del mantenimiento informtico y del inventario de equipos. Administrador, persona con permisos para acceder a todos los formularios.

H. Scope o mbitos de los Objetos


Estos mbitos normalmente mantienen beans y otros objetos que necesitan estar disponibles en diferentes componentes de una aplicacin web. -mbito de tipo peticin: Es el de vida ms corta. Empieza cuando una peticin HTTP comienza a tramitarse y acaba cuando la respuesta se enva al cliente. Por ejemplo, en la siguiente lnea de cdigo: <f:loadBundle basename="mensajes" var="msjs"/> la etiqueta f:loadBundle hace que la variable bundle solo exista mientras dura la peticin. Un objeto debe tener un mbito de este tipo slo si lo que se quiere es reenviarlo a otra fase de procesado. -mbito de tipo sesin: El navegador enva una peticin al servidor, el servidor devuelve una respuesta, y entonces ni el navegador ni el servidor tiene cualquier obligacin para conservar cualquier memoria de la transaccin. La sesin el rastreo con cookies es completamente transparente al desarrollador web, y las etiquetas estndar JSF automticamente reescriben URL si un cliente no usa cookies. El mbito de sesin permanece desde que la sesin es establecida hasta que esta termina. Una sesin termina si la aplicacin web invoca el mtodo invalidate en el objeto HttpSession o si su tiempo expira. Las aplicaciones Web tpicamente colocan la mayor parte de sus bean dentro de un mbito de sesin. -mbito de tipo aplicacin: Persiste durante toda la aplicacin web. Este mbito compartido entre todas las peticiones y sesiones [5].

IV. CONCLUSIONES
JSF es un framework que utiliza el patrn MVC(modelo, vista, controlador) para el desarrollo dinmico de aplicaciones web basadas en Java. La tecnologa JSF nos proporciona una rica arquitectura para manejar el estados de componentes, procesar datos, validar datos, y manejar eventos JSF nos permite desarrollar rpidamente aplicaciones de negocio dinmicas en donde se da una real separacin entre lgica de negocio y la presentacin de en las que toda la lgica de negocio se implementa en java, o es llamada desde java, creando pginas para las vistas muy sencillas, debido a que uso es muy similar a swing de java. Existen implementaciones de otros fabricantes para JSF como por ejemplo MyFaces o IceFaces que aparte de cumplir con el estndar JSF ofrecen componentes adicionales, razn por la cual se las debe tomar en cuenta a la hora de desarrollar aplicaciones web, como por ejemplo a la hora de desarrollar los proyectos de investigacin del mdulo actual.

REFERENCIAS
[1]Manual JSF, 22 de febrero 2010 https://docs.google.com/viewer?a=v&q=cache:imjygwayy4J:www.sicuma.uma.es/sicuma/Formacion/documentac ion/JSF. [2]Introduccin a JSF en java, 26 de marzo 2009 http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagi na=IntroduccionJSFJava [3]Etiquetas JSF, 10 de mayo 2011 http://www.slideshare.net/lauritat_9/etiquetas-bsicas-jsf9893451 [4]Validadores y Conversores en JSF, 13 de marzo 2006 http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagi na=convValidJSF [5] JSF(Java Server Faces), 21 de febrero 2006 http://www.desarrolloweb.com/articulos/2380.php

I. Gestin de Usuarios JSF


El usuario gestiona las interacciones relacionadas con la autenticacin de usuarios y la gestin del perfil del cliente, como los login, password, etc.