You are on page 1of 13

JAVA SERVER FACES Y EL USO DE PATRONES DE DISEO

II CONGRESO DE COMPUTACIN PARA EL DESARROLLO

John Oliver Quesada Chaves. Estudiante activo de la carrera de Informtica Empresarial. Universidad de Costa Rica, UCR-Puntarenas, Costa Rica. 8826-99-77 j1985_quesada@hotmail.com

Resumen En esta ponencia se desarrolla una breve introduccin a la implementacin de la tecnologa Java Server Faces (JSF), se indicarn los requisitos para su utilizacin, as como las funcionalidades que ofrece. La tecnologa Java Server Faces es un marco de trabajo de interfaces de usuario del lado de servidor para aplicaciones Web basadas en tecnologa Java. til con aplicaciones basadas en la arquitectura MVC (Model-ViewController).

Fig. 1, Modelo Vista Controlador.

Este modelo de programacin bien definido y la librera de etiquetas para componentes GUI facilita de forma significativa la tarea de la construccin y mantenimiento de aplicaciones Web con GUIs del lado del servidor. Las aplicaciones JSF son como cualquier otra aplicacin Java, se ejecutan en un contenedor Servlet java, y tpicamente contienen JavaBeans (llamados objetos del modelo en tecnologa JSF) conteniendo datos y funcionalidades especificas de la aplicacin, paginas como las JSP, clases de utilidad del lado del servidor, como beans para acceder a las bases de datos. 1. Qu es JSF? JSF es un marco de trabajo para crear aplicaciones java J2EE basadas en el patrn MVC de tipo 1. JSF tiene como caractersticas principales:

Utiliza pginas JSP para generar las vistas, aadiendo una biblioteca de etiquetas propia para crear los elementos de los formularios HTML. Asocia a cada vista con formularios un conjunto de objetos java manejados por el controlador (managed beans) que facilitan la recoleccin, manipulacin y visualizacin de los valores mostrados en los diferentes elementos de los formularios. Introduce una serie de etapas en el procesamiento de la peticin, como por ejemplo la de validacin, reconstruccin de la vista, recuperacin de los valores de los elementos, etc. 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. En efecto, hay muchas alternativas para crear la capa de presentacin y control de una aplicacin web java, como Struts y otros frameworks, pero solo JSP forma parte del estndar.

1.1. Requisitos de implementacin. Las libreras propias de JSF: jsf-api.jar y jsf-impl.jar. La primera contiene el paquete javax.faces.* y la segunda com.sun.faces.*. Las libreras comunes de Apache-Jacarta. Adems las libreras adicionales standard.jar y jstl.jar. Java EE. 2. Implementacin. Las principales implementaciones de JSF son: JSF Reference Implementation de Sun Microsystems. MyFaces proyecto de Apache Software Foundation. Rich Faces ICEfaces Contiene diversos componentes para interfaces de usuarios ms enriquecidas, tales como editores de texto enriquecidos, reproductores de multimedia, entre otros.

En la investigacin que eh realizado, me encontrado con diferentes editores para trabajar JSF, entre los cuales cabe destacar: NetBean. Eclipse. MyEclipse. JDeveloper.

Como se menciona anterior mente JSF, permite utilizar diferentes tecnologas para la capa de presentacin en mi caso ADF.

Implementando JSF junto con ADF (es un framework comercial de Java para la creacin de aplicaciones empresariales. Es una herramienta del tipo RAD que se basa en patrones de diseo listos para usar), encontramos un sin nmero de componentes listos para trabajar en flujo constante y gil con bases de datos.

2.1. Riesgos. Antes de comenzar el desarrollo con JSF debemos conocer aquellos puntos que nos pueden perjudicar y hacer ms largo el desarrollo de lo realmente es necesario. Con la poca experiencia que tengo en el tema e indagando, se pueden mencionar los siguientes puntos: Utilizar el alicate para clavar. JSF es una herramienta y como tal tiene una forma de uso. Si nos empeamos en seguir desarrollando las pginas como siempre, intentando adaptar JSF al modo al que habitualmente desarrollamos en vez de adaptarnos a JSF complicaremos el desarrollo Abuso del javascript. JSF permite utilizar javascript para hacer ms rpida una pgina HTML, evitando peticiones al servidor. Sin embargo la introduccin de javascript en la pgina complica y alarga los desarrollos con JSF, y en general con jsp. La capa javascript aade etapas adicionales a la aplicacin, que hace ms difcil su depurado. Un consejo: la pgina debera poderse ejecutar sin prdida de funcionalidad (slo de rendimiento si se desactiva el javascript). La maquetacin compleja tambin complica el desarrollo ya que obliga a utilizar muchas etiquetas y atributos, especialmente en los datatables. Si la maquetacin de nuestras pginas es compleja deberamos pensar en crear componentes JSF a medida que simplifiquen dicho trabajo.

2.2. Cmo funciona? Normalmente las aplicaciones web se construyen como un conjunto de pantallas con las que va interactuando el usuario. Estas pantallas contienen textos, botones, imgenes, tablas y elementos de seleccin que el usuario modifica.

Todos estos elementos estarn agrupados en formularios HTML, que es la manera en que las pginas web envan la informacin introducida por el usuario al servidor. La principal funcin del controlador JSF es asociar a las pantallas, clases java que recogen la informacin introducida y que disponen de mtodos que responden a las acciones del usuario. JSF nos resuelve de manera muy sencilla y automtica muchas tareas: Mostrar datos al usuario en cajas de texto y tablas. Recoger los datos introducidos por el usuario en los campos del formulario. Controlar el estado de los controles del formulario segn el estado de la aplicacin, activando, ocultando o aadiendo y eliminando controles y dems elementos Realizando validaciones y conversiones de los datos introducidos por el usuario Rellenando campos, listas, combos y otros elementos a medida que el usuario va interactuando con la pantalla Controlando los eventos que ocurren en los controles (pulsaciones de teclas, botones y movimientos del ratn).

Las aplicaciones JSF estn formadas por los siguientes elementos principales: Pginas JSP que incluyen los formularios JSF. Estas pginas generarn las vistas de la aplicacin Beans java que se conectan con los formularios JSF Clases java para la 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, java script y otros elementos.

3. Estructura de JSF. 3.1. Los Backbeans. A las clases java que se asocian a los formularios JSF se les denomina backend beans ya que son los beans (clases java) que estn detrs del formulario. Estos beans se referencian en el fichero de configuracin de JSF en el apartado de managed beans, ya que son beans gestionados por el controlador JSF. Este se encarga de su construccin y destruccin automticas cuando es necesario.

3.2. Estructura de las pginas. En su versin ms sencilla, cada pgina JSF est formada por una pgina JSP que contiene un formulario (HTML FORM) y un backbeans.

El controlador JSF registra en el servidor de aplicaciones un tipo especial de peticin, tpicamente *.jsf, que estar asociado a estas pginas. El primer caso comienza cuando el usuario realiza en su navegador una peticin de navegacin a una url de tipo *.jsf. Cuando al servidor web llega una peticin del tipo pagina JSF, el controlador JSF entra en funcionamiento.

Primero comprueba si es la primera vez que se accede a dicha pgina. Si es as, carga la pgina jsp asociada pagina.jsp y la procesa construyendo en memoria la representacin de los controles de la pgina. Tras esta etapa JSF sabe cmo construir el cdigo HTML de salida y la lista de controles de usuario que la cumplen, es decir, sabe lo que contiene y cmo pintarla.

El siguiente paso es asociarle los backbeans. Para ello, del procesamiento de la pgina jsp, el controlador ha obtenido la lista de backbeans asociados, por lo que procede a buscarlos en sus correspondientes mbitos de la aplicacin como la request y la session. Los beans que no existan se crean llamando a los constructores de sus clases, definidos en la session de managed beans del fichero de configuracin de JSF.

El tercer paso es dar valores a las propiedades de los elementos JSF de la pgina. Aqu juega un papel fundamental el lenguaje de expresiones de JSF, que es parecido al lenguaje de expresiones que se permite en las pginas jsp normales.

En su versin ms sencilla #{mibackbean.propiedad}.

una

expresin

JSF

sera

del

tipo

Finalmente el servidor devuelve al usuario una pgina creada a partir de una pgina JSP que incluye normalmente etiquetas JSF, cuyos valores se extraern del backbean asociado.

3.3. Navegacin. Cuando se ejecuta una peticin que incluye una accin, se ejecuta el mecanismo de navegacin de JSF. Tras la ejecucin de la accin, el controlador determina cmo se debe mostrar al usuario el resultado de la peticin. Hay varias posibilidades: Finalizar la peticin mostrando la pgina jsp que origin la peticin, que es la opcin por defecto. Mostrando otra pgina jsp diferente. Enviar al usuario una peticin de redireccin, por lo que el navegador del usuario se dirigir automticamente a otra pgina cuando reciba la respuesta a su peticin.

Este mecanismo de navegacin se implementa de manera sencilla en la pgina JSF. Cuando el controlador JSF llama al mtodo asociado a la accin, este devuelve un valor de tipo String. Este valor es utilizado junto con las reglas de navegacin creadas en el fichero de configuracin de JSF para determinar la pgina que se debe enviar como respuesta al usuario.

La pgina de origen. Indica el jsp que origin la peticin. La etiqueta de destino. Es la cadena que identifica el destino. Esta cadena es devuelta por el mtodo del backbean que procesa la accin. La pgina de destino para cada etiqueta. Normalmente es el jsp el que procesar la peticin de salida, utilizando los datos que hay en la request y en la sesin. Si es un envo directo interno o una redireccin externa. En el primer caso la respuesta se generar en la misma peticin mediante una redireccin interna a otro jsp o servlet. En el segundo caso se enviar como respuesta al navegador una instruccin de redireccin para que el navegador realice una nueva peticin de otra pgina.

Adems las direcciones de origen admiten el * para que una misma regla sirva para mltiples pginas. Tambin se pueden poner reglas por defecto que se aplican a todas las peticiones.

4. Gestin de beans. JSF gestiona automticamente la creacin y el acceso a los beans que utilizan las pginas jsp. Para ello el controlador determina qu beans utiliza la pgina y

dnde debe almacenarlos. El fichero de configuracin JSF mapea los nombres cortos de los beans utilizados en las pginas con las clases java que los definen.

Cuando se crean los beans? JSF busca el bean cada vez que se menciona en la pgina, en el orden en que aparecen en la pgina. Si el bean no existe en el mbito, lo crea. Por tanto el orden de las expresiones lo determina el orden de la creacin de los beans, si usamos ms de un bean en la pgina. Cmo se hace esto internamente? Al procesar la pgina JSP, las etiquetas JSF aaden cdigo que busca el bean mencionado en cada expresin. Si el bean no existe en el mbito elegido (request, session o application) se crea uno nuevo, llamando a su constructor por defecto, y se asocia al mbito requerido. Este mecanismo es fundamental para la comprensin del procesamiento de la pgina, sobre todo si trabajamos con beans de mbito request. 4. Resultados Preliminares. Personalmente me incline, por JDeveloper en su ltima versin (11g), los motivos de esta eleccin se debe a que es una herramienta gratuita y la gente Oracle tiene una comunidad muy grande que trabaja con JSF los cuales brindan una serie de ejemplos, demos y tutoriales del uso de esta tecnologa, para el desarrollo de aplicaciones Web.

Profundicemos un poco ms en los resultados que hasta el momento eh logrado.

Por ejemplo: La duracin para desarrollar una aplicacin Web que permita el registro de informacin a una Base de Datos, tiene un tiempo alto de desarrollo considerando todos los procesos que conlleva elaborarla, ahora como seria esto utilizando JSF con ADF.

Los tiempos de elaboracin se puede reducir aproximadamente en un 20%, teniendo un nivel muy bsico como el que mi persona a podido alcanzar, esto sin duda beneficia satisfactoriamente a cualquier entidad o organizacin que se dedique a este campo. La creacin de un proyecto de esta ndole, en el editor seleccionado es muy simple solo basta con seleccionar el tipo de proyecto y las libreras que queramos implementar en l. Adems permite la creacin de una conexin con la base de datos de una forma muy sencilla, esto para facilitar el uso de los componentes de ADF.

En este punto sera muy til, realizar la creacin de un caso de desarrollo pero nos extenderamos mucho en el tamao del documento, la idea fundamental en este momento es conocer en s que es JSF y para qu sirve y como trabaja.

Para no dejar la parte prctica de lado en este artculo tratare de ilustrar la creacin de un proyecto en JSF implementado ADF en JDeveloper 11g.

Primero que todo iniciaremos nuestro editor:

Fig. 2, Pgina de inicio de JDeveloper.

Luego crearamos una aplicacin nueva la cual debe contener en la capa de vista los componentes de ADF, estos componentes tienen la versatilidad de manipular las estructuras de la base de datos, pero primero para esto se realiza una conexin previa con la misma.

Fig. 3, Creacin de conexin con base de datos.

Fig. 4, creacin de un proyecto con JSF-ADF.

En este momento se ha creado una nueva aplicacin de JSF implementado la tecnologa de ADF, estos permitir la creacin de pginas en las cuales podemos implementar de una forma muy gil y rpida estos componentes que nos harn el trabajo ms rpido en el momento de desarrollar. Para utilizar las estructuras de la base de datos (tablas, vistas, etc.), necesitamos crear un control de datos, esto tiene como funcin realizar una especie de persistencia con la base de datos seleccionada, crear una entidad de cada tabla o vista y un objeto vista de la misma. Aqu es donde se implementan los componentes de ADF, los cuales realizaran la tarea anteriormente mencionada.

Fig. 5, utilizacin de componentes de ADF.

Hasta el momento eh tratado de ilustrar los pasos a seguir para la creacin de una conexin con la base de datos desde el editor, la creacin de un nuevo proyecto con la agregacin de la tecnologa ADF, la utilizacin de componentes ADF para utilizar las estructuras existente en la base de datos. Recalcando que nos hemos brincado pasados para no extender nuestro articulo. Con todo esto podemos en este punto plantearnos algunos puntos importantes: La creacin y agregacin de tecnologas tcnicamente fcil. La creacin de un proyecto Web con JSF, se realiza de una forma sencilla y no presenta ninguna configuracin complicada hasta el momento. La creacin de entidades para utilizar en las pginas se efecta siguiendo un par de siguientes y teniendo una BS bien depurada y lista.

AL mencionar estos puntos llegamos a la conclusin que el trabajo realizado a sido sencillo y entendible, lo que sigue es entender que nos permite esto en el desarrollo de aplicaciones y cmo podemos implementar lo hecho hasta el momento. Para esto continuaremos mostrando ejemplos sobre opciones sencillas pero muy tiles. Podemos crear una pgina la cual tiene una extensin .jsp, en la misma podremos agregar la funcionalidad deseada.

Fig. 6, creacin de pgina JSF.

Al crear una pgina y tener nuestro objetos con solo arrastrar algn componente en cuestin de segundos podemos crear formularios de bsqueda, mantenimientos, tablas de lectura, lista de valores para opciones de bsqueda y un sin nmero de opciones que puede agilizar nuestro desarrollo de una forma increble.

Algunos ejemplos

Fig. 7, formulario con in listado de valores.

Fig. 8, formulario de bsqueda.

Fig. 9, Mantenimientos.

5. Discusin Algunos temas en los que podemos entrar en discusin, para mi humilde punto de vista serian:

La disponibilidad de informacin sobre este tema no es que sea escasa pero si no es muy sencilla para principiantes a la hora de querer iniciar en el tema. En Costa Rica, no conozco ninguna entidad que trabaje utilizando estas tecnologa lo que impide la bsqueda de ayuda para poder capacitarse. Al inicio el conocimiento estn bsico que el uso o entendimiento es suma mente difcil, pero a medida que se profundiza en el tema el desarrollo se agiliza y es impresionante el aprovechamiento que se puede obtener. Para poder hablar de este tema podra llevarme ms de un artculo tratando de explicar componentes y funciones. Sin dejar de lado que mis conocimientos son auto adquiridos lo que significa que son bsicos, pero con el trabajo que entendido un poco la estructura de trabajo.

6. Conclusion. El framework JSF forma parte importante del estndar java J2EE. De hecho se est preparando una nueva versin que traer numerosas novedades, sobre todo en lo que se refiere a su integracin con AJAX. Tambin se est comenzando a utilizar en numerosas aplicaciones empresariales, ya que permite crear pantallas de usuario bastante complejas con una cierta facilidad, aunque desde luego no es sencillo la primera vez que te enfrentas a este framework. En la nueva versin se espera una mejora sobre el control de las fases del ciclo de vida de la peticin que faciliten la creacin de componentes JSF complejos que se usan de manera simple.

Este documento es una pequea introduccin al framework JSF. El cual no abarca completamente todo lo que ofrece la creacin de aplicaciones JSF. Se espera que con este se entienda y se aclaren algunas dudas sobre esta tecnologa para que se sienta el inters de echar un vistazo a JSF y se pueda hacer una idea de su potencia. 7. Bibliografa. www.eclipse.org www.oracle.com www.java.sun.com

You might also like