Download - Java Server Faces - teoría V0
-
8/8/2019 Java Server Faces - teora V0
1/31
Java Server Faces
-
8/8/2019 Java Server Faces - teora V0
2/31
Java Server Faces - JSF La tecnologa JavaServer Faces es un marco de trabajo de interfaces de usuario del lado de
servidor para aplicaciones Web basadas en tecnologa Java .
Java Server Faces utiliza el patrn de arquitectura MVC de tipo 2 (con controlador monoltico).
El framework JSF instala en nuestra aplicacin web un controlador que se encarga de la gestin
de los formularios y de la navegacin entre pginas. Los principales componentes de la tecnologa JavaServer Faces son:
1. 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.
2. Una librera de etiquetas JavaServer Pages (JSP) personalizadas para dibujar componentes UI
dentro de una pgina JSP.
-
8/8/2019 Java Server Faces - teora V0
3/31
Java Server Faces - JSF
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:1.Conectar eventos generados en el cliente a cdigo de la aplicacin en el
lado del servidor.
2.Mapear componentes UI a una pgina de datos del lado del servidor.
3.Construir un UI con componentes reutilizables y extensibles.
4.Grabar y restaurar el estado del UI ms all de la vida de las peticiones
de servidor.
-
8/8/2019 Java Server Faces - teora V0
4/31
Java Server Pages - JSP
Como se puede apreciar en la siguiente figura, el interface de usuario que creamos con la
tecnologa Java Server Faces (representado por myUI en el grfico) se ejecuta en el servidor y
se renderizaen el cliente.
-
8/8/2019 Java Server Faces - teora V0
5/31
Java Server Pages - JSP La pgina JSP, myform.jsp, dibuja los componentes del interface de usuario con etiquetas
personalizadas definidas por la tecnologa Java Server Faces.
El UI de la aplicacin Web (representado por myUI en la imagen) maneja los objetos
referenciados por la pgina JSP:
1. Los objetos componentes que mapean las etiquetas sobre la pgina JSP.
2. Los oyentes de eventos, validadores, y los convertidores que estn registrados en los
componentes.
3. Los objetos del modelo que encapsulan los datos y las funcionalidades de los componentes
especficos de la aplicacin.
-
8/8/2019 Java Server Faces - teora V0
6/31
Beneficios de la tecnologaJSF
Una de las grandes ventajas de la tecnologa Java Server Faces es que ofrece una clara
separacin entre el comportamiento y la presentacin.
Las aplicaciones Web construidas con tecnologa JSP conseguan parcialmente esta separacin.
Sin embargo, una aplicacin JSP no puede mapear peticiones HTTP al manejo de eventos
especficos del componentes o manejar elementos UI como objetos con estado en el servidor. La tecnologa Java Server Faces nos permite construir aplicaciones Web que implementan una
separacin entre el comportamiento y la presentacin tradicionalmente ofrecidas por
arquitectura UI del lado del cliente.
La separacin de la lgica de la presentacin tambin le permite a cada miembro del equipo de
desarrollo de una aplicacin Web enfocarse en su parte del proceso de desarrollo, y proporciona
un sencillo modelo de programacin para enlazar todas las piezas.
-
8/8/2019 Java Server Faces - teora V0
7/31
Beneficios de la tecnologaJSF
Otro objetivo importante de la tecnologa Java Server Faces es mejorar los conceptos familiares
de componente-UI y capa-Web sin limitarnos a una tecnologa de script particular o un lenguaje
de marcas.
Aunque la tecnologa Java Server Faces incluye una librera de etiquetas JSP personalizadas
para representar componentes en una pgina JSP, los APIs de la tecnologa Java Server Faces sehan creado directamente sobre el API JavaServlet.
Esto nos permite hacer algunas cosas:
usar otra tecnologa de presentacin junto a JSP,
crear nuestros propios componentes personalizados directamente desde las clases de
componentes,
generar salida para diferentes dispositivos cliente.
Pero lo ms importante, la tecnologa Java Server Faces proporciona una rica arquitectura para
manejar el estado de los componentes, procesar los datos, validar la entrada del usuario, y
manejar eventos.
-
8/8/2019 Java Server Faces - teora V0
8/31
Qu es una aplicacin JSF?
Las aplicaciones Java Server Faces son como cualquier otra aplicacin Web Java.
Se ejecutan en un contenedor Servlet Java, y tpicamente contienen:
Componentes JavaBeans (llamados objetos del modelo en tecnologa
JavaServer Faces) conteniendo datos y funcionalidades especficas de la
aplicacin.
Oyentes de Eventos.
Pginas, cmo pginas JSP.
Clases de utilidad del lado del servidor, como beans para acceder a las bases de
datos.
-
8/8/2019 Java Server Faces - teora V0
9/31
Qu es una aplicacin JSF?
Adems de estos tems, una aplicacin Java Server Faces tambin tiene:
Una librera de etiquetas personalizadas para dibujar componentes UI en una pgina.
Una librera de etiquetas personalizadas para representar manejadores de eventos,
validadores, y otras acciones.
Componentes UI representados como objetos con estado en el servidor.
Validadores, manejadores de eventos y manejadores de navegacin.
Toda aplicacin Java Server Faces debe incluir una librera de etiquetas personalizadas que
define las etiquetas que representan componentes UI (html) y una librera de etiquetas para
representar otras acciones importantes, como validadores y manejadores de eventos (core).
La implementacin de JavaServer Faces proporciona estas dos libreras.
-
8/8/2019 Java Server Faces - teora V0
10/31
Qu es una aplicacin JSF? La librera de etiquetas de componentes html 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.
Otra ventaja importante de las aplicaciones JSF 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 Java Server 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.
-
8/8/2019 Java Server Faces - teora V0
11/31
Proceso de Desarrollo de unaaplicacin
Desarrollar una sencilla aplicacin Java Server Faces requiere la realizacin de estos pasos:
Desarrollar los objetos del modelo, los que contendrn los datos.
Aadir las declaraciones del bean controlado al fichero de configuracin de la aplicacin.
Crear las pginas util izando las etiquetas de componentes UI y las etiquetas "core".
Definir la navegacin entre las pginas.
Estas tareas se pueden realizar simultneamente o en cualquier orden.
-
8/8/2019 Java Server Faces - teora V0
12/31
Proceso de Desarrollo de unaaplicacin
Este ejemplo nos pedir que adivinemos un nmero del 0 al 100, ambos inclusive.
La segunda pgina nos dir si hemos acertado.
El ejemplo tambin chequea la validez de nuestra entrada.
1. Desarrollar los Objetos del Modelo
Sern los objetos que se encargan de comunicar la pgina con la lgica de la aplicacin y debencoincidir los nombres de los componentes con los de los atributos.
2. Desarrollar los Objetos del Modelo
Dependiendo del tipo de componente que referencia una propiedad del objeto del modelo, esta
propiedad puede ser de cualquiera de los tipos bsicos primitivos y los tipos referencia
(envoltura).
La tecnologa JavaServer Faces convertir automticamente el dato al tipo especificado por lapropiedades del objeto del modelo.
Se recomienda el uso de tipos bsicos primitivos.
-
8/8/2019 Java Server Faces - teora V0
13/31
Proceso de Desarrollo de unaaplicacin
-
8/8/2019 Java Server Faces - teora V0
14/31
Proceso de Desarrollo de unaaplicacin3. Aadir las Declaraciones del Bean Controlado
Despus de desarrollar los beans utilizados en la aplicacin, necesitamos aadir declaraciones
para ellos en el archivo de configuracin de la aplicacin.
Esto se realiza en el archivo faces-config.xml
-
8/8/2019 Java Server Faces - teora V0
15/31
Proceso de Desarrollo de unaaplicacin
2. Aadir las Declaraciones del Bean Controlado
Despus de desarrollar los beans utilizados en la aplicacin, se declaran en el archivo de
configuracin de la aplicacin (faces-config.xml)
JavaServer Faces procesa este archivo al arrancar la aplicacin, inicializa el UserNumberBean
(AdivineNumero) y lo almacena en el mbito de sesin, estando disponible para todas las
pginas de la aplicacin.
Es equivalente a la utilizacin de la etiqueta jsp:useBean
3. Crear las Pginas
Distribuir los componentes UI en las pginas.
Mapear los componentes a los datos de los objetos del modelo.
Aadir etiquetas importantes (etiquetas del validador) a las etiquetas componentes.
-
8/8/2019 Java Server Faces - teora V0
16/31
Proceso de Desarrollo de unaaplicacin
welcome.jsp
-
8/8/2019 Java Server Faces - teora V0
17/31
Proceso de Desarrollo de unaaplicacin
success.jsp
-
8/8/2019 Java Server Faces - teora V0
18/31
Proceso de Desarrollo de unaaplicacin
4. Definir las Navegacin por las Pginas
Se indica a que pgina va la aplicacin despus de que el usuario pulse un botn para enviar un
formulario.
La navegacin por la aplicacin se define en el archivo de configuracin.
-
8/8/2019 Java Server Faces - teora V0
19/31
Proceso de Desarrollo de unaaplicacin
4. Definir las Navegacin por las Pginas
Cada regla de navegacin define cmo ir de una pgina a otras pginas de la aplicacin.
El elemento navigation-rule puede contener cualquier nmero de elementos navigation-case,
cada uno de los cuales define la pgina que se abrir luego (definida por to-tree-id) basndose
en una salida lgica (definida mediante from-outcome).
La salida se puede definir mediante el atributo action del componente UICommand que enva elformulario.
-
8/8/2019 Java Server Faces - teora V0
20/31
Ciclo de vida de una PginaJSF
El ciclo de vida de una pgina Java Server Faces es similar al de una pgina JSP:
El cliente hace una peticin HTTP de la pgina y el servidor responde con la pgina traducida
a HTML.
Sin embargo, debido a las caractersticas extras que ofrece la tecnologa Java Server Faces, el
ciclo de vida proporciona algunos servicios adicionales mediante la ejecucin de algunos pasosextras:
Reconstituir el rbol de Componentes
Aplicar Valores de la Peticin
Procesar Validaciones
Actualizar los Valores del Modelo Invocar Aplicacin
Renderizar la Respuesta
-
8/8/2019 Java Server Faces - teora V0
21/31
Ciclo de vida de una PginaJSF Los pasos del ciclo de vida se ejecutan dependen de si la peticin se origin o no desde una
aplicacin JavaServer Faces y si la respuesta es o no generada con la fase de renderizado del
ciclo de vida de JavaServer Faces.
La renderizacin (interpretacin) es el proceso de generar una imagen a partir de un modelo,
usando una aplicacin de computadora.
Esta seccin explica los diferentes escenarios del ciclo de vida.
-
8/8/2019 Java Server Faces - teora V0
22/31
Escenarios de Procesamiento delCiclo de vida de una peticin Una aplicacin JavaServer Faces soporta dos tipos diferentes de respuestas y dos tipos
diferentes de peticiones:
Respuesta Faces: Una respuesta servlet que se gener mediante la ejecucin de la fase
Renderizar la Respuesta del ciclo de vida de procesamiento de la respuesta.
Respuesta No-Faces: Una respuesta servlet que no se gener mediante la ejecucin de la
fase Renderizar la Respuesta. Un ejemplo es una pgina JSP que no incorporacomponentes Java Server Faces.
Peticin Faces: Una peticin servlet que fue enviada desde una Respuesta Faces
previamente generada. Ejemplo: un formulario enviado desde un componente de interface
de usuario JavaServer Faces, donde la URI de la peticin identifica el rbol de componentes
JavaServer Faces para usar el procesamiento de peticin.
-
8/8/2019 Java Server Faces - teora V0
23/31
Escenarios de Procesamiento delCiclo de vida de una peticin
Peticin No-Faces: Una peticin Servlet que fue enviada a un componente de aplicacin
como un servlet o una pgina JSP, en vez de directamente a un componente JavaServer
Faces.
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:Un ejemplo es cuando se pulsa un enlace de una pgina HTML que abre una pgina que
contiene componentes Java Server Faces. Para dibujar una Respuesta Faces desde una
peticin No-Faces, una aplicacin debe proporcionar un mapeo FacesServlet en la URL de la
pgina que contiene componentes Java Server Faces. FacesServlet acepta peticiones
entrantes y pasa a la implementacin del ciclo de vida para su procesamiento.
-
8/8/2019 Java Server Faces - teora V0
24/31
Escenarios de Procesamiento delCiclo de vida de una peticin
Escenario 2: Una Peticin Faces genera una Respuesta No-Faces:
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
Renderizar la Respuesta llamando a FacesContext.responseComplete. FacesContext
Contiene toda la informacin asociada con una Peticin Faces particular. Este mtodo sepuede invocar durante las fases Actualizar los Valores del Modelo.
Escenario 3: Una Peticin Faces genera una Respuesta Faces:
Es el escenario ms comn en el ciclo de vida de una aplicacin Java Server Faces.
Este escenario implica componentes Java Server Faces enviando una peticin a una
aplicacin JavaServer Faces utilizando el FacesServlet.
Como la peticin ha sido manejada por la implementacin Java Server Faces, la aplicacin
no necesita pasos adicionales para generar la respuesta. Todos los oyentes, validadores y
convertidores sern invocados automticamente durante la fase apropiada del ciclo de vida
estndar.
-
8/8/2019 Java Server Faces - teora V0
25/31
Ciclo de Vida Estndar deProcesamiento de Peticiones La mayora de los usuarios de la tecnologa Java Server Faces no necesitarn conocer a fondo el
ciclo de vida de procesamiento de una peticin. Sin embargo, conociendo lo que la tecnologa
Java Server Faces realiza para procesar una pgina, un desarrollador de aplicaciones Java
Server Faces no necesitar preocuparse de los problemas de renderizado asociados con otras
tecnologas UI. La siguiente figura ilustra los pasos del ciclo de vida peticin-respuesta Java
Server Faces
-
8/8/2019 Java Server Faces - teora V0
26/31
Ciclo de Vida Estndar deProcesamiento de PeticionesReconstituir el rbol de Componentes
Cuando se hace una peticin para una pgina Java Server Faces, como cuando se pulsa
sobre un enlace o un botn, la implementacin Java Server Faces comienza el estado
Reconstituir el rbol de Componentes.
Durante esta fase, la implementacin Java Server Faces construye el rbol de
componentes de la pgina JavaS erver Faces, conecta los manejadores de eventos y losvalidadores y graba el estado en el FacesContext.
Aplicar Valores de la Peticin
Una vez construido el rbol de componentes, cada componente del rbol extrae su
nuevo valor desde los parmetros de la peticin con su mtodo decode. almacenando el
valor localmente en el componente.
Si falla la conversin del valor, se genera un mensaje de error asociado con el
componente y se pone en la cola de FacesContext y se mostrar durante la fase
Renderizar la Respuesta, junto con cualquier error de validacin resultante de la
fase Procesar Validaciones.
-
8/8/2019 Java Server Faces - teora V0
27/31
Ciclo de Vida Estndar deProcesamiento de PeticionesAplicar Valores de la Peticin
Si durante esta fase se produce algn evento, la implementacin Java Server Faces emite los
eventos a los oyentes interesados.
En este punto, si la aplicacin necesita redirigirse a un recurso de aplicacin Web diferente o
generar una respuesta que no contenga componentes Java Server Faces, puede llamar a
FacesContext.responseComplete.
Procesar Validaciones
Durante esta fase, la implementacin Java Server 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 la Respuesta
para que la pgina sea dibujada de nuevo incluyendo los mensajes de error.
-
8/8/2019 Java Server Faces - teora V0
28/31
Ciclo de Vida Estndar deProcesamiento de Peticiones
Procesar Validaciones 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 Java Server Faces, puede
llamar a FacesContext.responseComplete.
Si se han disparado eventos durante esta fase, la implementacin Java Server Faces los emite a
los oyentes interesados.
Actualizar los Valores del Modelo
Una vez que la implementacin Java Server Faces determina que el dato es vlido, puede pasar
por el rbol de componentes y configurar los valores del objeto de modelo correspondiente con
los valores locales de los componentes. Slo se actualizarn los componentes que tenga
expresiones valueRef. Si el dato local no se puede convertir a los tipos especificados por las propiedades del objeto del
modelo, el ciclo de vida avanza directamente a la fase Renderizar la Respuesta, durante la
que se dibujar de nuevo la pgina mostrndo los errores, similar a lo que sucede con los
errores de validacin.
-
8/8/2019 Java Server Faces - teora V0
29/31
Ciclo de Vida Estndar deProcesamiento de Peticiones
Actualizar los Valores del Modelo
En este punto, si la aplicacin necesita redirigirse a un recurso de aplicacin Web diferente o
generar una respuesta que no contenga componentes Java Server Faces, puede llamar a
FacesContext.responseComplete.
Si se han disparado eventos durante esta fase, la implementacin Java Server Faces los emite a
los oyentes interesados.
-
8/8/2019 Java Server Faces - teora V0
30/31
Ciclo de Vida Estndar deProcesamiento de Peticiones
Invocar Aplicacin
Durante esta fase, la implementacin Java Server 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 Java Server Faces, puede llamar a
FacesContext.responseComplete. Luego la implementacin Java Server Faces configura el rbol de componentes de la respuesta a
esa nueva pgina.
Finalmente, la implementacin Java Server Faces transfiere el control a la fase Renderizar la
Respuesta.
i l d id d d
-
8/8/2019 Java Server Faces - teora V0
31/31
Ciclo de Vida Estndar deProcesamiento de Peticiones
Renderizar la Respuesta
Durante esta fase, la implementacin Java Server 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 laspginas contienen etiquetas output_errors, cualquier mensaje de error que haya en la cola
se mostrar en la pgina.