Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
Objetivos
Conocer y emplear apropiadamente la tecnologa JSF en aplicaciones Web.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
Contenidos
Qu es una Aplicacin JavaServer Faces? Roles del Equipo de Programacin Aplicacin JSF Sencilla Ciclo de Vida de una pgina JSF Modelo de Componentes de Interfaz de Usuario Modelo de Navegacin Creacin del Bean Controlado Configuracin de la Aplicacin Conclusiones Referencias
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
3
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
Este modelo de programacin bien definido y la librera de etiquetas para componentes UI facilitan de forma significativa la tarea de la construccin y mantenimiento de aplicaciones Web con UIs del lado del servidor. Con un mnimo esfuerzo, podemos:
Conectar eventos generados en el cliente a cdigo de la aplicacin en el lado del servidor. Mapear componentes UI a una pgina de datos del lado del servidor. Construir un UI con componentes reutilizables y extensibles. Grabar y restaurar el estado del UI ms all de la vida de las peticiones de servidor.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
Como se puede apreciar en la siguiente figura, el interfase de usuario creado con la tecnologa JavaServer Faces (representado por myUI en el grfico) se ejecuta en el servidor y se renderiza en el cliente.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
La pgina JSP, yform.jsp, dibuja los componentes del interfase de usuario con etiquetas personalizadas definidas por la tecnologa JavaServer Faces. El UI de la aplicacin Web (representado por myUI en la imagen) maneja los objetos referenciados por la pgina JSP:
Los objetos componentes que mapean las etiquetas sobre la pgina JSP. Los oyentes de eventos, validadores, y los conversores que est registrados en los componentes. Los objetos del modelo que encapsulan los datos y las funcionalidades de los componentes especficos de la aplicacin.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
7
Beneficios (2)
Otro objetivo importante de la tecnologa JavaServer Faces es mejorar los conceptos familiares de componente-UI y capaWeb sin limitarnos a una tecnologa de script particular o un lenguaje de marcas. Aunque la tecnologa JavaServer Faces incluye una librera de etiquetas JSP personalizadas para representrar componentes en una pgina JSP, los APIs de la tecnologa JavaServer Faces se han creado directamente sobre el API JavaServlet. sto permite hacer algunas cosas:
usar otra tecnologa de presentacin junto a JSP, crear nuestros propios componentes personalizados directamente desde las clases de componentes y generar salida para diferentes dispositivos cliente.
Pero lo ms importante: la tecnologa JavaServer Faces proporciona una rica arquitectura para:
manejar el estado de los componentes, procesar los datos, validar la entrada del usuario y manejar eventos.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
10
Arquitectura de JSF
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
13
Toda aplicacin JavaServer Faces debe incluir una librera de etiquetas personalizadas que define las etiquetas que representan componentes UI y una librera de etiquetas para representar otras acciones importantes, como validadores y manejadores de eventos. La implementacin de JavaServer Faces proporciona estas dos libreras.
La librera de etiquetas de componentes elimina la necesidad de codificar componentes UI en HTML u otro lenguaje de marcas, resultando en componentes completamente reutilizables. La librera "core" hace fcil registrar eventos, validadores y otras acciones de los componentes.
La librera de etiquetas de componentes puede ser la librera html_basic incluida con la implementacin de referencia de la tecnologa JavaServer Faces, o podemos definir nuestra propia librera de etiquetas que dibuje componentes personalizados o que dibuje una salida distinta a HTML.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
14
Otra ventaja importante de las aplicaciones JavaServer Faces es que los componentes UI de la pgina estn representados en el servidor como objetos con estado. Esto permite a la aplicacin manipular el estado del componente y conectar los eventos generados por el cliente a cdigo en el lado del servidor. Finalmente, la tecnologa JavaServer Faces nos permite convertir y validar datos sobre componentes individuales y reportar cualquier error antes de que se actualicen los datos en el lado del servidor.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
15
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
16
En muchos equipos, los desarrolladores individuales puede interpretar ms de uno de esos roles, sin embargo, an as es muy til considerar la tecnologa JavaServer Faces desde varias perspectivas basadas en la responsabilidad primaria.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
17
Estas tareas se pueden realizar simultneamente o en cualquier orden. Sin embargo, la gente que realice las tareas necesitar comunicarse durante el proceso de desarrollo. Por ejemplo, el autor de las pginas necesita saber los nombres de los objetos del modelo para poder acceder a ellos desde la pgina. Este ejemplo pedir que adivinemos un nmero del 0 al 10, ambos inclusive. La segunda pgina dir si hemos acertado. El ejemplo tambin chequea la validez de la entrada.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
18
1. Desarrollar los objetos del modelo, los que contendrn los datos. 2. Aadir las declaraciones del bean controlado al fichero de configuracin de la aplicacin. 3. Crear las pginas utilizando las etiquetas de componentes UI y las etiquetas "core". 4. Definir la navegacin entre las pginas.
1. Desarrollar los Objetos del Modelo 2. Aadir las Declaraciones del Bean Controlado 3. Crear las Pginas 4. Definir las Navegacin por las Pginas
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
19
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
20
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
21
La combinacin de estas peticiones y respuestas resulta en tres posibles escenarios del ciclo de vida que pueden existir en una aplicacin JavaServer Faces: Escenario 1: Una Peticin No-Faces genera una Respuesta Faces: Escenario 2: Una Peticin Faces genera una Respuesta No-Faces: Escenario 3: Una Peticin Faces genera una Respuesta Faces:
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
22
Escenario 2: Una Peticin Faces genera una Respuesta No-Faces No Algunas veces una aplicacin JavaServer Faces podra necesitar redirigir la salida a un recurso diferente de la aplicacin Web diferente o generar una respuesta que no contiene componentes JavaServer Faces. En estas situaciones, el desarrollador debe saltarse la fase de renderizado (Renderizar la Respuesta) llamando a FacesContext.responseComplete. FacesContext Contiene toda la informacin osociada con una Peticin Faces particular. Este mtodo se puede invocar durante las fases Aplicar los Valores de Respuesta, Procesar Validaciones o Actualizar los Valores del Modelo.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
24
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
25
La siguiente figura ilustra los pasos del ciclo de vida peticinrespuesta JavaServer Faces
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
27
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
28
Procesar Validaciones
Durante esta fase, la implementacin JavaServer Faces procesa todas las validaciones registradas con los componentes del rbol. Examina los atributos del componente que especifican las reglas de validacin y compara esas reglas con el valor local almacenado en el componente. Si el valor local no es vlido, la implementacin JavaServer Faces aade un mensaje de error al FacesContext y el ciclo de vida avanza directamente hasta la fase Renderizar las Respuesta para que la pgina sea dibujada de nuevo incluyendo los mensajes de error. Si haba errores de conversin de la fase Aplicar los Valores a la Peticin, tambin se mostrarn. En este momento, si la aplicacin necesita redirigirse a un recurso de aplicacin Web diferente o generar una respuesta que no contenga componentes JavaServer Faces, puede llamar a FacesContext.responseComplete. Si se han disparado eventos durante esta fase, la implemetnacin JavaServer Faces los emite a los oyentes interesados. En la pgina greeting.jsp, la implementacin JavaServer Faces procesa el validador sobre la etiqueta input_number de UserNumber. Verifica que el dato introducido por el usuario en el campo de texto es un entero entre 0 y 10. Si el dato no es vlido, o ocurri un error de converisn durante la fase Aplicar los Valores a la Peticin, el procesamiento salta a la fase Renderizar las Respuesta, durante la que se dibujar de nuevo la pgina greeting.jsp mostrando los mensajes de error de conversin o validacin en el componente asociado con la etiqueta output_errors.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
30
Invocar Aplicacin
Durante esta fase, la implementacin JavaServer Faces maneja cualquier evento a nivel de aplicacin, como enviar un formulario o enlazar a otra pgina. En este momento, si la aplicacin necesita redirigirse a un recurso de aplicacin Web diferente o generar una respuesta que no contenga componentes JavaServer Faces, puede llamar a FacesContext.responseComplete. La pgina greeting.jsp del ejemplo guessNumber tiene asociado un evento a nivel de aplicacin con el componente Command. Cuando se procesa este evento, una implementacin de ActionListener por defecto recupera la salida, success, desde el atributo action del componente. El oyente pasa la salida al NavigationHandler por defecto. Y ste contrasta la salida con las reglas de navegacin definidas en el fichero de configuracin de la aplicacin para determinar qu pgina se debe mostrar luego. Luego la implementacin JavaServer Faces configura el rbol de componentes de la respuesta a esa nueva pgina. Finalmente, la implementacin JavaServer Faces transfiere el control a la fase Renderizar la Respuesta.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
32
Renderizar la Respuesta
Durante esta fase, la implementacin JavaServer Faces invoca las propiedades de codificacin de los componentes y dibuja los componentes del rbol de componentes grabado en el FacesContext. Si se encontraron errores durante las fases Aplicar los Valores a la Peticin, Procesar Validaciones o Actualizar los Valores del Modelo, se dibujar la pgina original. Si las pginas contienen etiquetas output_errors, cualquier mensaje de error que haya en la cola se mostrar en la pgina. Se pueden aadir nuevos componentes en el rbol si la aplicacin incluye renderizadores personalizados, que definen cmo renderizar un componente. Despus de que se haya renderizado el contenido del rbol, ste se graba para que las siguientes peticiones puedan acceder a l y est disponible para la fase Reconstituir el rbol de Componentes de las siguientes llamadas.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
33
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
34
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. UIParameter: Representa la sustitucin de parmetros. 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, selececcionndolo o deseleccionndolo. Esta clase es una subclase de UIInput. 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.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
36
La mayora de los autores de pginas y de los desarrolladores de aplicaciones no tendrn que utilizar estas clases directamente. En su lugar, incluirn los componentes en una pgina usando la etiqueta correspondiente al componente. La mayora de estos componentes se pueden renderizar de formas diferentes. Por ejemplo, un UICommand se puede renderizar como un botn o como un hiperenlace.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
37
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
38
Un kit renderizador define como se mapean las clases de los componentes a las etiquetas de componentes apropiadas para un cliente particular. La implementacin JavaServer Faces incluye un RenderKit estndar para renderizar a un cliente HTML. Por cada componente UI que soporte un RenderKit, ste define un conjunto de objetos Renderer. Cada objeto Renderer define una forma diferente de dibujar el componente particular en la salida definida por el RenderKit. Por ejemplo, un componente UISelectOne tiene tres renderizadores diferentes. Uno de ellos dibuja el componente como un conjunto de botones de radio. Otro dibuja el componente como un ComboBox. Y el tercero dibuja el componente como un ListBox. Cada etiqueta JSP personalizada en el RenderKit de HTML, est compuesta por la funcionalidad del componetne, definida en la clase UIComponent, y los atributos de renderizado, definidos por el Renderer. Por ejemplo, las dos etiquetas que podemos ver en la siguiente tabla representan un componente UICommand, renderizado de dos formas diferentes:
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
39
La parte command de las etiquetas corresponde con la clase UICommand, y especifica la funcionalidad, que es disparar un action. Las partes del botn y el hiperenlace de las etiquetas corresponden a un renderizador independiente, que define cmo dibujar el componente. La implementacin de referencia de JavaServer Faces proporciona una librera de etiquetas personalizadas para renderizar componentes en HTML. Soporta todos los componentes listados en la siguiente tabla:
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
40
Modelo de Conversin
Una aplicacin JavaServer Faces opcionalmente puede asociar un componente con datos del objeto del modelo del lado del servidor. Este objeto del modelo es un componente JavaBeans que encapsula los datos de un conjunto de componentes. Una aplicacin obtiene y configura los datos del objeto modelo para un componente llamando a las propiedades apropiadas del objeto modelo para ese componente. Cuando un componente se une a un objeto modelo, la aplicacin tiene dos vistas de los datos del componente: la vista modelo y la vista presentacin, que representa los datos de un forma que el usuario pueda verlos y modificarlos. Una aplicacin JavaServer Faces debe asegurarse que los datos del componente puedan ser convertidos entre la vista del modelo y la vista de presentacin. Esta conversin normalmente la realiza automticamente el renderizador del componente. En algunas situaciones, podramos querer convertir un dato de un componente a un tipo no soportado por el renderizador del componente. Para facilitar esto, la tecnologa JavaServer Faces incluye un conjunto de implementaciones estndar de Converter que nos permite crear nuestros conversores personalizados. La implementacin de Converter convierte los datos del componente entre las dos vistas.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
41
Un evento value-changed ocurre cuando el usuario cambia el valor de un componente. Un ejemplo es seleccionar un checkbox, que resulta en que el valor del componente ha cambiado a true. Los tipos de componentes que generan estos eventos son los componentes UIInput, UISelectOne, UISelectMany, y UISelectBoolean. Este tipo de eventos slo se dispara si no se detecta un error de validacin. Un evento action ocurre cuando el usuario pulsa un botn o un hiperenlace. El componente UICommand genera este evento.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
43
Modelo de Validacin
La tecnologa JavaServer Faces soporta un mecanismo para validar el dato local de un componente durante la fase del Proceso de Validacin, antes de actualizar los datos del objeto modelo. Al igual que el modelo de conversin, el modelo de validacin define un conjunto de clases estndar para realizar chequeos de validacin comunes. La librera de etiquetas jsf-core tambin define un conjunto de etiquetas que corresponden con las implementaciones estndar de Validator. La mayorra de las etiquetas tienen un conjunto de atributos para configurar las propiedades del validador, como los valores mximo y mnimo permitidos para el dato del componente. El autor de la pgina registra el validador con un componente anidando la etiqueta del validador dentro de la etiqueta del componente. Al igual que el modelo de conversin, el modelo de validacin nos permite crear nuestras propias implementaciones de Validator y la etiqueta correspondiente para realizar validaciones personalizadas.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
44
Modelo de Navegacin
Virtualmente todas las aplicaciones Web estn hechas de un conjunto de pginas. Uno de los principales problemas de un desarrollador de aplicaciones Web es manejar la navegacin entre esas pginas. El nuevo modelo de navegacin de JavaServer Faces facilita la definicin de la navegacin de pginas y el manejo de cualquier procesamiento adicional necesario para elegir la secuencia en se que cargan las pginas. En muchos casos, no se requiere cdigo para definir la navegacin. En su lugar, la navegacin se puede definir completamente en el fichero de configuracin de la aplicacin usando un pequeo conjunto de elementos XML. La nica situacin en que necesitaremos proporcionar algo de cdigo es si necesitamos algn procesamiento adicional para determinar qu pgina mostrar luego.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
45
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
47
Configuracin de la Aplicacin
En las pginas anteriores hemos visto los distintos recursos disponibles para una aplicacin JavaServer Faces. Esto incluye, conversores, validadores, componentes, objetos del modelo, acciones, manejadores de navegacin y otros. En las versiones anteriores, estos recursos tenan que ser configurados programticamente. Se requera un ApplicationHandler para definir la navegacin de pginas, y un ServletContextListener para registrar conversores, validadores renderizadores, etc. Esta versin presenta un formato de configuracin de recursos configurable (como un documento XML) para configurar los recursos requeridos por una aplicacin en el momento de la arrancada. Este nueva caracterstica elimina la necesidad de un ApplicatonHandler y un ServletContextListener. En posteriores tutoriales sobre JSF veremos como configurar los recursos en el fichero XML.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
48
En las versiones anteriores, una vez que se creaban los recursos, la informacin utilizada por algunos de ellos se almacenaba en el FacesContext, que representa informacin contextual para una peticin dada. Estos recursos normalmente estn disponibles durante el ciclo de vida de la aplicacin. Por lo tanto, es ms apropiado recuperar la informacin de estos recursos desde un slo objeto que es ejemplarizado para cada aplicacin. Esta versin de JavaServer Faces presenta la clase Application, que se crea automticamente por cada aplicacin. La clase Application acta como factora centralizada de recursos como conversores y recursos de mensajes que estn definidos en el fichero XML. Cuando una aplicacin necesita acceder a alguna informacin sobre uno de los recursos definidos en el fichero XML, primero recupera un ejemplar de Application de un ApplicationFactory y luego recupera el ejemplar del recurso de la aplicacin
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
49
Conclusiones
La tecnologa JSF, por diseo, es particularmente til con aplicaciones basadas en la arquitectura MVC (Model-View-Controller).
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
50
Bibliografa
Introduccin a la Tecnologa JavaServer Faces Integracin de JSF, Spring e Hibernate para crear una Aplicacin Web del Mundo Real JSF - Java Server Faces (y comparacin con Struts) Web Tier With JavaServer Faces, en Java BluePrints Solutions Catalog -> JSF Tutorial (por Marty Hall, autor del texto gua Core Servlets) Developing Web Applications with JavaServer Faces Proyecto con JSF Java Server Faces Myfaces, Maven y Eclipse Guia JSF Introduccin a Ajax4jsf
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
51
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
52
Uno de los patrones ms conocidos en el desarrollo Web es el patrn MVC (Modelo Vista Controlador). Este patrn nos permite/obliga a separar la lgica de control (sabe que cosas hay que hacer pero no como), la lgica de negocio (sabe como se hacen las cosas) y la lgica de presentacin (sabe como interactuar con el usuario). Utilizando este tipo de patrones conseguimos: ms calidad, mejores posibilidades de mantenimiento, perder el miedo al folio en blanco (tengo un patrn a seguir al empezar un proyecto), ... pero una de las cosas ms importantes es la normalizacin y estandarizacin del desarrollo de Software. En este tutorial vamos a ver un framework de desarrollo que sigue el patrn MVC. Los frameworks son muy tiles ya que nos permiten no tener que reinventar la rueda cada vez. Es decir el framework no slo sigue el patrn, sino que me da unas directrices de trabajo, y nos da gran parte del trabajo ya hecho (en forma de libreras, aplicaciones, ...).
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
53
JSF (Java Server Faces) es un framework de desarrollo basado en el patrn MVC (Modelo Vista Controlador). Al igual que Struts, JSF pretende normalizar y estandarizar el desarrollo de aplicaciones Web. Hay que tener en cuenta JSF es posterior a Struts, y por lo tanto se a nutrido de la experiencia de este, mejorando algunas sus deficiencias. De hecho el creador de Struts (Craig R. McClanahan) tambin es lder de la especificacin de JSF. A continuacin presento algunos de los puntos por los que JSF me parece una tecnologa muy interesante (incluso ms que Struts ;) Especificaciones que definen JSF:
JSR 127 (http://www.jcp.org/en/jsr/detail?id=127) JSR 252 (http://www.jcp.org/en/jsr/detail?id=252) JSR 276 (http://www.jcp.org/en/jsr/detail?id=276)
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
54
JSF trata la vista (el interfaz de usuario) de una forma algo diferente a lo que estamos acostumbrados en aplicaciones Web. Sera ms similar al estilo de Swing, Visual Basic o Delphi, donde la programacin del interfaz se hace a travs de componentes y basada en eventos (se pulsa un botn, cambia el valor de un campo, ...). JSF es muy flexible. Por ejemplo nos permite crear nuestros propios componentes, o crear nuestros propios render para pintar los componentes segn nos convenga. Es ms sencillo. JSF no puede competir en madurez con Struts (en este punto Struts es claro ganador), pero si puede ser una opcin muy recomendable para nuevos desarrollos, sobre todo si todava no tenemos experiencia con Struts. Comparativa ms a fondo entre Struts y JSF
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
55
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
57
Internacionalizacin (i18n)
La internacionalizacin va a permitir mostrar la aplicacin segn el idioma del usuario. Para ello en el archivo faces-config.xml se especifican que localizaciones soporta la aplicacin y cual es la localizacin por defecto:
<application> <locale-config> <default-locale>es</default-locale> <supported-locale>en</supported-locale> </locale-config> </application>
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
58
Internacionalizacin (2)
Ejemplo de uso de i18n, que podemos encontrar en el fichero customize.jsp:
... <html> <f:view> <f:loadBundle basename="MessageResources" var="msg"/> <head> <title>${msg.customize_title}</title> </head> <body> ...
En el ejemplo se puede ver como lo primero que se hace es cargar el archivo de recursos. El sistema se encargar de seleccionar el apropiado segn el lenguaje, y si se trata de un lenguaje no soportado se seleccionar el idioma por defecto. Una vez cargado el archivo de recursos es tan fcil usarlo como ${msg.customize_title} donde msg es el identificador que se le di al fichero de recursos y cutomize_title es la clave del mensaje a mostrar.
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
59
Conclusiones
Con JSF no se trabaja con objetos de tipo HttpSession, HttpServletRequest, ... esto es una ventaja ya que no hay prcticamente acoplamiento entre nuestra aplicacin y el hecho de que el interfaz de usuario sea a travs de HTTP. JSF surge como un framework muy prometedor, y una opcin muy recomendable para nuevos desarrollos. Ojo: ningn framework resuelve todas las problemticas. El ejemplo ms sencillo para comprender esta afirmacin es pensar en un aplicacin Web y en un portal. En el primer caso el usuario interacta con la aplicacin introduciendo unos datos y esperando obtener unos resultados, en el segundo caso el usuario puede navegar por distintas pantallas de informacin, donde esta informacin seguramente cambia a lo largo del tiempo (cada da, semana, mes, ...). Para las aplicaciones Web pueden ser muy convenientes frameworks como JSF, Struts, Spring, ... Pero estos no nos servirn (o ser muy trabajoso) para hacer portales. Para este segundo caso sera ms adecuado usar gestores de contenidos como Lenya, OpenCMS, etc...
2006 Universidad de de Las AmricasEscuela de Ingeniera - Java II - Dr. DatosJos Aranda Aboy 2006Universidad Las Amricas - - Escuela de Ingeniera - Bases de Juan - Erik Sacre
60