Está en la página 1de 14

1.

Generalidades
Siendo muy simple, Framework es un esquema (un esqueleto, un
patrn) para el desarrollo y/o la implementacin de una aplicacin. S,
es una definicin muy genrica, pero tambin puede serlo
un framework: sin ir ms lejos, el paradigma MVC (Model-ViewController) dice poco ms que separa en tu aplicacin la gestin de
los datos, las operaciones, y la presentacin. En el otro extremo,
otros frameworks pueden llegar al detalle de definir los nombres de
ficheros, su estructura, las convenciones de programacin, etc.
Los frameworks no
necesariamente
estn
ligados
a
un lenguaje concreto, aunque sea as en muchas ocasiones. En el
cada vez ms popular Ruby on Rails, Ruby es el lenguaje de
programacin y Rails elframework; por otro lado, JavaServer Faces
est orientado a desarrollos en Java. Sin embargo, nada impidedefinir
el mismo framework para lenguajes diferentes: por ejemplo, existe un
framework llamado Biscuitcuyo objetivo es prcticamente convertirse
en un PHP on Rails. Eso s, cuanto ms detallado es elframework,
ms necesidad tendr de ceirse a un lenguaje concreto.
Tambin es posible que el framework defina una estructura para una
aplicacin completa, o bien slo se centre en un aspecto de ella.
Siguiendo con los ejemplos, Ruby on Rails ofrece un marco para
el desarrollo completo de una aplicacin web, mientras que
JavaServer Faces est ms orientado a la interfaz de usuario.
Qu ventajas tiene utilizar un framework?
Las que se derivan de utilizar un estndar; entre otras:

El programador no necesita plantearse una estructura global de la


aplicacin, sino que el framework le proporciona un esqueleto que
hay que rellenar.
Facilita la colaboracin. Cualquiera que haya tenido que
pelearse con el cdigo fuente de otro programador (o incluso
con el propio, pasado algn tiempo!) sabr lo difcil que es
entenderlo y modificarlo; por tanto, todo lo que sea definir y
estandarizar va a ahorrar tiempo y trabajo a los desarrollos
colaborativos.
Es ms fcil encontrar herramientas (utilidades, libreras)
adaptadas al framework concreto para facilitar el desarrollo.

Qu ventajas tiene utilizar un framework?


Las que se derivan de utilizar un estndar; entre otras:

El programador no necesita plantearse una estructura global de la


aplicacin, sino que el framework le proporciona un esqueleto que
hay que rellenar.
Facilita la colaboracin. Cualquiera que haya tenido que
pelearse con el cdigo fuente de otro programador (o incluso
con el propio, pasado algn tiempo!) sabr lo difcil que es
entenderlo y modificarlo; por tanto, todo lo que sea definir y

estandarizar va a ahorrar tiempo y trabajo a los desarrollos


colaborativos.Es ms fcil encontrar herramientas (utilidades,
libreras) adaptadas al framework concreto para facilitar el
desarrollo.
Y si no necesito o no quiero utilizar un framework?
Por supuesto, un desarrollador puede crear toda una aplicacin sin
seguir ningn framework conocido; puede que sea tan pequea que
no lo considere necesario, que no conozca ninguno que se adapte a
sus necesidades, o simplemente no desee dedicar tiempo a
seleccionar y utilizar uno.
Sin embargo, a medida que la aplicacin crece, un programador
competente procurar seguir unas determinadas pautas que le
faciliten su trabajo de desarrollo y mantenimiento: separacin de
presentacin y lgica, una sintaxis coherente, etc. La evolucin
natural sera hacia que, de algn modo, se construir su
propio framework.
Y en vez de definir un estndar, por qu no utilizar uno ya definido, y
aprovechar el trabajo de otros muchos desarrolladores? Hacer un
desarrollo crptico y difcil de interpretar puede ser til en un concurso
decdigo ofuscado o para presumir de gur, pero es muy poco til
para desarrollar y mantener una aplicacin. El coste inicial (la curva
de aprendizaje) de utilizar un framework se compense probablemente
en cuanto el trabajo de desarrollo crezca mnimamente.
Pero qu framework utilizo?
Buscando en la red se encuentra mucha informacin sobre
los frameworks existentes para las diferentes plataformas y
lenguajes. Posiblemente uno de sus principales problemas es que
haya demasiados: ya se sabe, lo bueno de los estndares es que hay
muchos
para
elegir
:).
Sin
embargo,
la
eleccin
del frameworkconcreto a utilizar vendr marcada por:

El tipo de aplicacin a desarrollar


El lenguaje de programacin y otras tecnologas concretas: base de
datos, sistema operativo, etc.
Como introduccin a los frameworks, Ruby on Rails me parece una
buena opcin para desarrollar una aplicacin web y como ejemplo
de lo que es un framework. Dentro del mundo Java, Struts parece
uno de los ms extendidos.

En conclusin
La utilizacin de un framework en el desarrollo de una aplicacin
implica un cierto coste inicial de aprendizaje, aunque a largo plazo es
probable que facilite tanto el desarrollo como el mantenimiento.

Existen multitud de frameworks orientados a diferentes lenguajes,


funcionalidades, etc. Aunque la eleccinde uno de ellos puede ser una
tarea complicada, lo ms probable que a largo plazo slo los mejor
definidos (o ms utilizados, que no siempre coinciden con los
primeros) permanezcan. Y si ninguno de ellos se adapta a las
necesidades de desarrollo, siempre es mejor definir uno propio que
desarrollar al por mayor.
2. Frameworks para JAVA
FrameWork es un concepto sumamente genrico, se refiere a
ambiente de trabajo, y ejecucin, por ejemplo .Net es
considerado
un
framework
para
desarrollar
aplicaciones
(Aplicaciones sobre Windows). En general los framework son
soluciones completas que contemplan herramientas de apoyo a la
construccin (ambiente de trabajo o desarrollo) y motores de
ejecucin
(ambiente
de
ejecucin).
Son diseados con la intencin de facilitar el desarrollo de software,
permitiendo a los diseadores y programadores pasar ms tiempo
identificando requerimientos desoftware que tratando con los
tediosos detalles de bajo nivel de proveer un sistema funcional.
FrameWork puede ser algo tan grande como .NET o Java (tambin
es un framework), pero tambin el concepto se aplica a mbitos ms
especficos, por ejemplo; dentro de Java en el mbito especfico de
aplicaciones Web tenemos los framework: Struts, Java Server Faces,
o Spring. Estos frameworks de Java en la prctica son conjuntos de
libreras (APIs) para desarrollar aplicaciones Web, ms libreras para
su ejecucin (o motor), y ms un conjunto de herramientas para
facilitar esta tarea (debuggers, ambientes de desarrollo como Eclipse,
etc).
El mbito ms comn es el de desarrollo de aplicaciones o sistemas
(genrico), bajo el cual algunos buenos ejemplos de Framework sobre
Java son:

Spring en combinacin con Eclipse (eclipse es el equivalente a


Visual Studio .NET pero para Java)
Struts en combinacin con Eclipse.
a) Spring Framework
Spring es un framework para el desarrollo de aplicaciones y
contenedor de inversin de control, de cdigo abierto para
laplataforma Java.
La primera versin fue escrita por Rod Johnson, quien lo lanz
junto a la publicacin de su libro Expert One-on-One J2EE Design
and Development (Wrox Press, octubre 2002). El framework fue
lanzado inicialmente bajo la licencia Apache 2.0 en junio de 2003.
El primer gran lanzamiento fue la versin 1.0, que apareci en
marzo de 2004 y fue seguida por otros hitos en septiembre de
2004 y marzo de 2005. La versin 1.2.6 de Spring Framework

obtuvo reconocimientos Jolt Awards y Jax Innovation Awards en


2006. Spring Framework 2.0 fue lanzada en 2006, la versin 2.5
en noviembre de 2007, Spring 3.0 en diciembre de 2009, y Spring
3.1 dos aos ms tarde. El inicio del desarrollo de la versin 4.0
fue anunciado en enero de 2013. La versin actual es 4.1.1.
Si bien las caractersticas fundamentales de Spring Framework
pueden ser usadas en cualquier aplicacin desarrollada en Java,
existen variadas extensiones para la construccin de aplicaciones
web sobre la plataforma Java EE. A pesar de que no impone
ningn modelo de programacin en particular, este framework se
ha vuelto popular en la comunidad al ser considerado una
alternativa, sustituto, e incluso un complemento al modelo EJB
(Enterprise JavaBean).
Historia
Los primeros componentes de lo que se ha convertido en Spring
Framework fueron escritos por Rod Johnson en el ao 2000,
mientras trabajaba como consultor independiente para sus
clientes en la industria financiera en Londres. Mientras escriba el
libro Expert One-on-one J2EE Design And Development
(Programmer to programmer), Rod ampli su cdigo para
sintetizar su visin acerca de cmo las aplicaciones que trabajan
con varias partes de la plataforma J2EE podan llegar a ser ms
simples y ms consistentes que aquellas que los desarrolladores y
compaas estaban usando por aquel entonces.
En el ao 2001 los modelos dominantes de programacin para
aplicaciones basadas en web eran ofrecidas por el API Java Servlet
y los Enterprise JavaBeans, ambas especificaciones creadas por
Sun Microsystems en colaboracin con otros distribuidores y
partes interesadas que disfrutaban de gran popularidad en la
comunidad Java. Las aplicaciones que no eran basadas en web,
como las aplicaciones basadas en cliente o aplicaciones en batch,
podan ser escritas con base en herramientas y proyectos de
cdigo abierto o comerciales que proveyeran las caractersticas
requeridas para aquellos desarrollos.
Se form un pequeo equipo de desarrolladores que esperaba
trabajar en extender el framework y un proyecto fue creado en
Sourceforge en febrero de 2003. Despus de trabajar en su
desarrollo durante ms de un ao lanzaron una primera versin
(1.0) en marzo de 2004. Despus de este lanzamiento Spring
gan mucha popularidad en la comunidad Java, debido en parte al
uso de Javadoc y de una documentacin de referencia por encima
del promedio de un proyecto de cdigo abierto.
Sin embargo, Spring Framework tambin fue duramente criticado
en 2004 y sigue siendo el tema de acalorados debates. Al tiempo
en que se daba su primer gran lanzamiento muchos
desarrolladores y lderes de opinin vieron a Spring como un gran
paso con respecto al modelo de programacin tradicional; esto
era especialmente cierto con respecto a Enterprise JavaBeans.

Una de las metas de diseo de Spring Framework es su facilidad


de integracin con los estndares J2EE y herramientas
comerciales existentes. Esto quita en parte la necesidad de definir
sus caractersticas en un documento de especificacin elaborado
por un comit oficial y que podra ser criticado.
Spring Framework hizo que aquellas tcnicas que resultaban
desconocidas para la mayora de programadores se volvieran
populares en un periodo muy corto de tiempo. El ejemplo ms
notable es la inversin de control. En el ao 2004, Spring disfrut
de unas altsimas tasas de adopcin y al ofrecer su propio
framework de programacin orientada a aspectos (aspectoriented programming, AOP) consigui hacer ms popular su
paradigma de programacin en la comunidad Java.
En 2005 Spring super las tasas de adopcin del ao anterior
como resultado de nuevos lanzamientos y ms caractersticas
fueron aadidas. El foro de la comunidad formada alrededor de
Spring Framework (The Spring Forum) que arranc a finales de
2004 tambin ayud a incrementar la popularidad del framework
y desde entonces ha crecido hasta llegar a ser la ms importante
fuente de informacin y ayuda para sus usuarios.
Mdulos
Spring Framework comprende diversos mdulos que proveen un
rango de servicios:
Contenedor de inversin de control: permite la configuracin de los
componentes de aplicacin y la administracin del ciclo de vida de los
objetos Java, se lleva a cabo principalmente a travs de la inyeccin de
dependencias.
Programacin orientada a aspectos: habilita la implementacin de rutinas
transversales.
Acceso a datos: se trabaja con RDBMS en la plataforma java, usando Java
Database Connectivity y herramientas de Mapeo objeto relacional con bases
de datos NoSQL.
Gestin de transacciones: unifica distintas APIs de gestin y coordina las
transacciones para los objetos Java.
Modelo vista controlador: Un framework basado en HTTP y servlets, que
provee herramientas para la extensin y personalizacin de aplicaciones
web y servicios webREST.
Framework de acceso remoto: Permite la importacin y exportacin
estilo RPC, de objetos Java a travs de redes que soporten RMI, CORBA y
protocolos basados enHTTP incluyendo servicios web (SOAP).
Convencin sobre Configuracin: el mdulo Spring Roo ofrece una solucin
rpida para el desarrollo de aplicaciones basadas en Spring Framework,
privilegiando la simplicidad sin perder flexibilidad.
Procesamiento por lotes: un framework para procesamiento de mucho
volumen que como caractersticas incluye funciones de registro/trazado,
manejo de transacciones, estadsticas de procesamiento de tareas, reinicio
de tareas, y manejo de recursos.

Autenticacin y Autorizacin: procesos de seguridad configurables que


soportan un rango de estndares, protocolos, herramientas y prcticas a
travs del subproyecto Spring Security (antiguamente Acegi).
Administracin Remota: Configuracin de visibilidad y gestin de objetos
Java para la configuracin local o remota va JMX.
Mensajes: Registro configurable de objetos receptores de mensajes, para el
consumo transparente desde la a travs de JMS, una mejora del envo de
mensajes sobre las API JMS estndar.
Testing: Soporte de clases para desarrollo de unidades de prueba e
integracin.
b) Hibernate
Hibernate es una herramienta de Mapeo objeto-relacional (ORM)
para la plataforma Java (y disponible tambin para .Net con el
nombre de NHibernate) que facilita el mapeo de atributos entre
una base de datos relacional tradicional y el modelo de objetos de
una aplicacin, mediante archivos declarativos (XML) o
anotaciones en los beans de las entidades que permiten
establecer estas relaciones.
Hibernate es software libre, distribuido bajo los trminos de la
licencia GNU LGPL.
Caractersticas liberadas
Como todas las herramientas de su tipo, Hibernate busca
solucionar el problema de la diferencia entre los dos modelos de
datos coexistentes en una aplicacin: el usado en la memoria de
la computadora (orientacin a objetos) y el usado en las bases de
datos (modelo relacional). Para lograr esto permite al
desarrollador detallar cmo es su modelo de datos, qu relaciones
existen y qu forma tienen. Con esta informacin Hibernate le
permite a la aplicacin manipular los datos en la base de datos
operando sobre objetos, con todas las caractersticas de la POO.
Hibernate convertir los datos entre los tipos utilizados por Java y
los definidos por SQL. Hibernate genera las sentencias SQL y
libera al desarrollador del manejo manual de los datos que
resultan de la ejecucin de dichas sentencias, manteniendo la
portabilidad entre todos los motores de bases de datos con un
ligero incremento en el tiempo de ejecucin.
Hibernate est diseado para ser flexible en cuanto al esquema
de tablas utilizado, para poder adaptarse a su uso sobre una base
de datos ya existente. Tambin tiene la funcionalidad de crear la
base de datos a partir de la informacin disponible.
Hibernate ofrece tambin un lenguaje de consulta de datos
llamado HQL (Hibernate Query Language), al mismo tiempo que
una API para construir las consultas programticamente (conocida
como "criteria").

Hibernate para Java puede ser utilizado en aplicaciones Java


independientes o en aplicaciones Java EE, mediante el
componente Hibernate
Annotations que
implementa
el
estndar JPA, que es parte de esta plataforma.
Historia
Hibernate fue una iniciativa de un grupo de desarrolladores
dispersos alrededor del mundo conducidos por Gavin King.
Tiempo despus, JBoss Inc. (empresa comprada por Red Hat)
contrat a los principales desarrolladores de Hibernate y trabaj
con ellos en brindar soporte al proyecto.
La rama actual de desarrollo de Hibernate es la 3.x, la cual
incorpora nuevas caractersticas, como una nueva arquitectura
Interceptor/Callback, filtros definidos por el usuario, y
opcionalmente
el
uso
de anotaciones para
definir
la
correspondencia en lugar de (o conjuntamente con) los archivos
XML.
Hibernate 3 tambin guarda cercana con la especificacin EJB 3.0
(aunque apareciera antes de la publicacin de dicha
especificacin por Java Community Process) y acta como la
espina dorsal de la implementacin de EJB 3.0 en JBoss.
c) JSF
Tecnologa y framework para aplicaciones Java basadas en web
que simplifica el desarrollo de interfaces de usuario en
aplicaciones Java EE. JSF usa JavaServer Pages (JSP) como la
tecnologa que permite hacer el despliegue de las pginas, pero
tambin se puede acomodar a otras tecnologas como XUL.
JSF incluye:

Un conjunto de APIs para representar componentes de una


interfaz de usuario y administrar su estado, manejar eventos,
validar entrada, definir un esquema de navegacin de las
pginas
y dar
soporte
para internacionalizacin
y
accesibilidad.
Un conjunto por defecto de componentes para la interfaz de
usuario.
Dos bibliotecas de etiquetas personalizadas para JavaServer
Pages que permiten expresar una interfaz JavaServer Faces
dentro de una pgina JSP.
Un modelo de eventos en el lado del servidor.
Administracin de estados.
Beans administrados.

Algunos objetivos de JSF

Definir un conjunto simple de clases base de Java para


componentes de la interfaz de usuario, estado de los

componentes y eventos de entrada. Estas clases tratarn los


aspectos del ciclo de vida de la interfaz de usuario,
controlando el estado de un componente durante el ciclo de
vida de su pgina.
Proporcionar un conjunto de componentes para la interfaz de
usuario, incluyendo los elementos estndares de HTML para
representar un formulario.

JSF nos permite desarrollar rpidamente aplicaciones de negocio


dinmicas en las que toda la lgica de negocio se implementa en
java, o es llamada desde java, creando pginas para las vistas
muy sencillas (salvo que introduzcamos mucha maquetacin
HTML o Javascript)
JSF nos ofrece una serie de ventajas:
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 (i18n)
JSF permite introducir javascript en la pgina, para acelerar la respuesta de
la interfaz en el cliente (navegador del usuario).
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.
Desde el punto de vista tcnico podemos destacar los siguientes:
JSF forma parte del estndar J2EE, mientras que otras tecnologas para
creacin de vistas de las aplicaciones no lo forman, como por ejemplo
Struts.
JSF dispone de varias implementaciones diferentes, incluyendo un conjunto
de etiquetas y APIs estndar que forman el ncleo del framework. Entre
estas implementaciones cabe destacar la implementacin de referencia de
Sun Microsystems, actualmente desarrollada como un proyecto open source,
y la implementacin del proyecto Apache, MyFaces, dotada de un conjunto
de extensiones que la hacen muy interesante para el desarrollo de
aplicaciones corporativas.
El desarrollo de JSF est realmente empezando. Las nuevas versiones del
framework recogen la funcionalidad de versiones anteriores siendo su
compatibilidad muy alta, de manera que el mantenimiento de aplicaciones
no se ve penalizado por el cambio de versiones.
Riesgos en el desarrollo JSF
Antes de comenzar el desarrollo con JSF debemos conocer
aquellos puntos que lo pueden hacer ms largo de lo realmente
necesario. Entre ellos la experiencia nos muestra los siguientes:

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 javascipt 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.

Cmo funciona JSF


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 medidad y otros
elementos del framework.
Resto de recursos de la aplicacin web: recursos esttios,
javascript y otros elementos.

Las etiquetas JSF


JSf dispone de un conjunto bsico de etiquetas que permiten crear
fcilmente componentes dinmicos en las pginas web. Estas
etiquetas son:

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. Incluye un campo oculto del formulario.
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
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 na lista desplegable de seleccin.

h:selectOneRadio. Crea una


normalmente, excluyentes.

lista

de

botones,

redondos

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 detras del formulario. Estos beans se referencian en el
fichero de configuracion 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.
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
backbean.
El controlador JSF registra en el servidor de aplicaciones un tipo
especial de peticin, tipicamente *.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 repesentacin 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 seccion 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 una expresin JSF sera del tipo
#{mibackbean.propiedad}.
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, ahora ya
actualizados.

Respondiendo a las acciones del usuario


Una vez que el usuario ve la pgina web que se ha construido con
JSF, est listo para comenzar a interactuar con ella. El mtodo
mas sencillo de interaccin es el uso de formularios web. Un
formulario web simple consta de:

Etiquetas que muestran informacin


Campos editables
El botn de envo del formulario

El controlador JSF dispone de un conjunto de etiquetas que


permiten definir formularios JSF. Las ms sencillas son:
h:form. Esta etiqueta sustituye al form de HTML, aadiendo la
funcionalidad JSF al formulario
h:outputText. Sirve para imprimir valores en la pgina
h:inputText. Sirve para crear campos editables en los que
introducir los datos
h:commandButton. Crea botones que envan el formulario
Cuando la pgina JSF contiene elementos que incluyen acciones
se ejecuta una fase ms en el procesamiento de la peticin al
servidor. Si en nuestro formulario hay botones u otros elementos
que tienen una propiedad action, si se pulsa sobre el elemento
cuando la peticin sea procesada por el servidor se ejecutar la
lgica de la accin asociada a este elemento. Este es el
mecanismo JSF habitual para ejecutar a lgica de la aplicacin.
Esto se hace ejecutando los mtodos del backbean asociado a la
pgina
La navegacin entre pginas
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.
Envindo 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.

Las reglas de navegacin definen:

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. Tambien se pueden
poner reglas por defecto que se aplican a todas las peticiones.
Las etapas del procesamiento de la peticin
Para entender el procesamiento de una pgina JSF hay que
entender el ciclo de vida de la peticin dentro del controlador JSF.
Este ciclo de vida est compuesto de 6 fases (al menos en la
versin actual, ya que se est preparando la versin 2.0 de JSF y
esto podra cambiar)
Durante el procesamiento de una peticin el controlador JSF
realiza las siguientes etapas:
a. Restaurar los conponentes de la vista (restore view). En esta
etapa el controlador construye en memoria la estructura de
componentes de la pgina.
b. Aplicar los valores de la peticin.. (apply request values). En
esta etapa se recuperan los valores de la request y se asignan
a los beans de la pgina.
c. Procesamiento de las validaciones (process validations). Se
verifican los parmetros de entrada segn un conjunto de
reglas definidas en un fichero de configuracin.
d. Actualizar los valores del modelo (update model values). Los
valores ledos y validados son cargados en los beans.
e. Invocacion a la aplicacin (invoke application). Se ejecutan las
acciones y eventos solicitados para la pgina. Si es necesario
se realiza la navegacin.
f. Generacin de la pgina (render response). En esta fase se
genera la pgina que ser enviada al usuario con todos sus
elementos y valores actualizados.
Gestin de los 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 EL determinan 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 EL. 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. Mi recomendacin: ponle siempre logs a los
constructores para saber el momento exacto de su ejecucin.

También podría gustarte