JSF - Conceptos Basicos

  • Published on
    18-Jun-2015

  • View
    1.643

  • Download
    1

Transcript

DescripcinJavaServer Faces es un estndar oficial JEE 5, se trata de un framework que define un modelo de componentes de interfaz de usuario y de eventos. JavaServer Faces nos permite manejar el estado de los componentes de interfaz de usuario, manejar sus eventos, la validacin y conversin del lado del servidor y centralizar la navegabilidad de las pginas de nuestra aplicacin, como se muestra en la siguiente imgen:

La especificacin JSR 127 nos dice: "JavaServer Faces es un entorno de desarrollo de interfaces de usuario para aplicaciones web creadas en Java. Esta diseado para facilitar el desarrollo y mantenimiento de las aplicaciones que se ejecutan en un servidor y devuelven el resultado en forma de interfaz al cliente". JSF es el marco estndar que proporciona Java para construir aplicaciones web y JEE 5, es un marco desarrollo que sigue el patrn MVC, proporcionando una manera de validar datos, llamar a reglas de negocio y devolver los resultados al cliente.

EstadoHomologado en 2008Q2 La ltima versin estable homologada es JSF 1.2

Enlaces principales Pgina principal sobre JSF: http://java.sun.com/javaee/javaserverfaces/ Informacin sobre el mundo JSF: http://www.jsfcentral.com/

Consideraciones GeneralesJavaServer Faces proporciona :

Una clara separacin entre vista y modelo. Desarrollo basado en componente, no en peticiones. Las acciones del usuario se ligan muy fcilmente al cdigo en el servidor. Creacin de familias de componentes visuales para acelerar el desarrollo. Ofrece mltiples posibilidades de eleccin entre distintas implementaciones.

Para mayor informacin sobre las utilidades JSF, aqu Las aplicaciones JSF siguen el patrn MVC, concretamente el modelo 2. Una tpica aplicacin JSF est compuesta de las siguientes partes:

JavaBeans para el manejo del comportamiento y del estado de la aplicacin

En JSF los modelos son JavaBeans (POJO), no Actions, no Forms, no se extiende de ninguna clase, y lo que es mejor, los recursos no se declaran expresamente, JSF los crea por nosotros.

Un modelo de desarrollo orientado a los eventos

Por medio de Listener como es habitual en el desarrollo de pantallas de usuarios en Swing. Struts es un entorno basado en las peticiones, actuando un servlet como controlador para redirigir la llamada al recurso solicitado, JSF en un marco basado en Componentes, es decir son las peticiones URL las que dirigen todo el desarrollo, todo el trabajo del programador va dirigido a controlar la peticin y crear la respuesta.

En entornos JSF la misin del desarrollador es crear , enlazar y modificar componentes, y estos componentes son los que crean la respuesta que el cliente visualizar, que no son ms que beans, POJOs. Estos beans se dividen en dos grupos, por un lado los encargados de responder a las peticiones de los clientes. En la tecnologa de visin que empleemos, se escribir una llamada a estos objetos; es misin de JSF, crear la peticin, interceptarla y dirigirla a el objeto que nosotros le indiquemos. De esta manera, programar en JSF en muy parecido a programar en Swing, toda la interaccin del usuario con la pantalla se controla con eventos. Cuando el usuario pulsa un boton, lanza una peticion URL, sin que haya que programarla, que es interceptada por un servlet controlador, este servlet redirige la informacin de la peticin al objeto que cre antes asociado al documento, comprueba la informacin que tena antes y la contenida en la nueva peticion, y genera los eventos necesarios segn los cambios que haya habido, por ejemplo, el pulsar un botn.

Pginas que representan vistas

Estas pginas, una vez tratadas por el desarrollo JSF se representarn como objetos Java con una estructura jerrquica en forma de rbol, para poder ser manipuladas por cdigo, como haramos en una aplicacin Swing, y asi aadir componentes adicionales, contenidos en tablas, etc. JSF trae asociado un modelo de componentes para simplificar y acelerar el desarrollo de las aplicaciones. Estos componentes se ordenan en una estructura jerrquica a la que se puede acceder y

modificar. Pero estos componentes no saben cmo dibujar la vista en el cliente, esa es la labor de otra parte fundamenteal de la arquitectura JSF, los Renders. La misin de los Renders es dibujar la informacin que, en forma jerrquica, se almacena en los componentes la estructura de la pgina; de esta manera, es posible desarrollar una aplicacin sin conocer cual ser el dispositivo final. O lo que es mejor desarrollar una aplicacin que se ve en dispositivos diferentes, solo cambiando el Render, sin tocar ni una lnea de la vista. O que el mismo objeto se vea como botn o como enlace, slo cambiando el render asociado a ese componente. Esta tcnica es tambin de ayuda aunque slo desarrollemos con el lenguaje de marcado HTML en nuestra mente, pues es el Render_el encargado de escribir gran parte del javascript que se necesita para el funcionamiento de la aplicacin, y lo hace de manera adecuada en cada navegador. JSF slo obliga a que los desarrollos de la especificacin traigan un _Render para HTML. Esta separacin entre la definicin de la pgina en el servidor y el Renderdel lenguaje de marcado proporciona flexibilidad al desarrollador de componentes. Y permite que se cree un mercado de componentes, tanto comerciales como de cdigo abierto que van desde simples cajas de texto a estructuras jerrquicas ms complejas, mens, tablas con ordenacin. Todo esto gracias al desarrollo de un modelo de componentes estandard que respetan la especificacin de JavaBeans, su estilo de eventos y escuchadores y las fases definidas en el ciclo de vida.

Recomendaciones de usoRecomendamos el desarrollo de aplicaciones web con JavaServer Faces si la aplicacin tiene las siguientes necesidades:

Aplicaciones web de nuevo desarrollo, intranet o de internet con no demasiados usuarios. Aplicaciones web con necesidades de interfaz grfico sofisticado.

Recomendaciones para construccin y diseo en aplicaciones JSF Recomendamos tambin dividir los ficheros de configuracin por funcionalidades ya que JSF nos lo permite. Dedicar un fichero a escribir las reglas de navegacin, y otro a la creacin de los backing bean, otro a la configuracin del entorno, y as tantos como necesitemos. Los puntos fuertes que hemos visto para JavaServer Faces son:

Gran cantidad de componentes listos para usarse con funcionalidades avanzadas: Tomahawk y RichFaces Permite encapsular otras tecnologas como Ajax en componentes JSF, haciendo su uso ms facil y productivo, al aislar al programador de ellas. Mas fcil de usar al aislar al desarrollador del API de Servlet. No request, no response, no setAttibute. Sin embargo la curva de aprendizaje del modelo puede llegar a ser larga. Gran cantidad de herramientas para el desarrollo IDE en JSF al ser el estandar de Java: Eclipse y el subproyecto Web Tools Project, JBoss Tools y NetBeans

ResponsabilidadesLa misin de JSF es aislar al programador tanto del tipo de cliente que hace la peticin como del protocolo usado para tal menester, permitiendo la creacin de las vistas de una manera abstracta, usando un modelo de componentes estable, estandar y extensible. De esta manera al aislarse del entorno y sus particularidades, los desarrollos pueden ser ms productivos, rpidos y eficazes, al usar componentes ya probados.

Interacciones con otros subsistemasMyFaces

Facelets proporciona la posibilidad de escribir la capa cliente sin usar JSP. Spring y JSF Pruebas Unitarias JSF RichFaces Tomahawk

Restricciones y limitacionesHa habido un intento por tratar de que "convivan" JSF y Struts, es el caso de la librera strutsfaces(librera que no ha sido evaluada ni mucho menos homologada por arquitectura) no hay documentacin para esta librera y en el sitio oficial de Apache no se puede encontrar la versin que correspondera para nuestra versin homologada de Struts 1.2.7 Componente JBoss 4.2.2 MyFaces 1.2.2 RichFaces 3.2.0 MyFaces 1.1.4 enlace al repositorio Tomahawk 1.1.6 1.3 1.1 2.3 1.2 1.1 1.3 1.1 2.3 1.2 1.0 1.5 1.2 2.5 2.1 1.2 JSDK 1.5 1.5 JSF 1.2 1.2 Servlet 2.5 2.5 JSP 2.1 2.1 JSTL 1.2 1.2

El motor de servlet debe ser compatible con la especificacin 2.3 y las JSP deben ser acordes a la especificacin 1.2. JSF nicamente soporta peticiones realizadas con POST. La especificacin no obliga a que haya validaciones en el cliente, si bien MyFaces si que porporciona esta posibilidad.

Ejemplos de usoNo aplica.

Documentacin Nuevas caractersticas en JSF 1.2 Captulos 10,11,12,13 y 14 del Tutorial de Java EE 5 http://java.sun.com/javaee/5/docs/tutorial/doc/bnaph.html Introduccin a JSF http://www.coreservlets.com/JSF-Tutorial/ Un artculo sobre JSF http://www-128.ibm.com/developerworks/library/j-jsf1/ Tutoriales JSF

Especificaciones que definen JSF

Labels parameters

JSR 127 JSR 252 JSR 276