Java Server Faces - teoría V0

Embed Size (px)

Citation preview

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