83
DEPARTAMENTO DE SISTEMAS Contenedores y JavaServer Faces 1

Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Contenedores y JavaServer Faces

1

Page 2: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Agenda

•  Introducción •  Contenedores •  Contenedor Glassflish •  Tecnología JavaServer Faces

o  Definición JSF o  Navegación o  Backing Beans o  JSF Tags o  Conversión y Validación o  Manejo de Eventos

2

Page 3: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

•  La arquitectura JEE es independiente de la plataforma y utiliza componentes reutilizables

•  El servidor JEE provee los servicios en la forma de un contenedor (container) para cada tipo de componente.

•  El desarrollador se concentra en resolver problemas del lógica de negocio.

Introducción

3

Page 4: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Introducción

4

Resolver problemas a nivel de: - Transacciones - Persistencia - Distribución de objetos - Administración de conexiones - Redundancia - Construcción frameworks propios - Comprar soluciones propietarias (limitaciones)

Provee servicios comunes como: -  Persistencia -  Transacciones -  Distribución de Objetos -  Administración de conexiones -  Los proveedores implementan los estándares -  Configuración centralizada -  Permiten centrarse en los problemas del negocio -  Sus servicios se utilizan a través de APIs estándares -  Desarrollar soluciones independiente de la plataforma -  Mayor nivel de integración

Sin servidor de aplicaciones Con servidor de aplicaciones

Page 5: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Introducción

•  Servicios Contenedor: o  Interfaz entre los componentes y la plataforma que los

soporta

o  Desplegar aplicaciones ensambladas, lo cual implica configurar el contenedor para la aplicación JEE

o  Las configuraciones del contenedor incluyen la seguridad, administración de transacciones, persistencia, servicios de jndi y conectividad remota

o  Su funcionalidad es definida por la plataforma JEE y es diferente para cada tipo de componente

5

Page 6: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Introducción

o  Seguridad: permite configurar los componentes web o EJB para que solo sean utilizados por usuarios autorizados y autenticados mediante JAAS

o  Transacciones (JTA): permite el manejo de transacciones distribuidas que están en múltiples recursos como una unidad (especificación JSR 907).

o  Búsqueda (JNDI lookup): interfaz unificada para acceso a servicios de nombres y directorios.

o  El modelo de conectividad remota JEE administra las comunicaciones a bajo nivel entre clientes y beans empresariales de manera transparente.

6

Page 7: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Introducción

•  Tipos de contenedores: o  Contenedor Web o  Contenedor de aplicación cliente o  Contenedor EJB

7

Page 8: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Contenedores

•  Contenedor WEB Es una interfaz entre los componentes Web (servlets, páginas JavaServer Faces o Páginas JSP) y el servidor web. En tiempo de ejecución ofrece los servicios requeridos por los componente web. o  Servicios:

  Recepción de solicitudes   Seguridad   Concurrencia   Administración del ciclo de vida de componentes web   Permite acceso de los componentes web a las APIs tales

como transacciones. o  Ejemplos: Tomcat, Jetty.

8

Page 9: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Contenedores

•  Contenedor EJB (Enterprise JavaBeans) Es la interfaz entre los beans empresariales (proveen la lógica del negocio) y el servidor JEE. o  Servicios

  Gestiona la ejecución (ciclo de vida) de los EJBs   Se ejecuta sobre un servidor JEE   Soporta los componentes que implementan la lógica de

negocio   Ofrece servicios de control de acceso y seguridad, control de

transacciones y ejecución concurrente entre otras. o  Ejemplos : JBoss, Glassfish

9

Page 10: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Contenedores

•  Contenedor Aplicaciones Cliente Es la interfaz entre las aplicaciones clientes JEE las cuales son aplicaciones especiales Java SE que usan los componentes de servidor JEE.

o  Servicios:   Se ejecutan en la máquina del cliente   Es el gateway entre la aplicación cliente y los componentes

del servidor JEE que usa el cliente.

10

Page 11: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Sun GlassFishTM Enterprise Server

•  Sun GlassFishTM Enterprise Server Servidor de aplicaciones que implementa las especificaciones Java EE, construida por una comunidad open source (Sun, Ericsson, Oracle entre otros). Permite crear, ensamblar, desplegar y depurar código para aplicaciones empresariales.

11

Page 12: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

•  Características:

o  Soporta tecnologías: JSP, JSF, Servlets, EJBs, Java API para Servicios Web (JAX-WS), Arquitectura Java para Enlaces XML (JAXB), Java Persistence API.

o  Código abierto (GPL) o  Certificado con estándares Sun JAVA System Application

Server 9 PE

12

Sun GlassFishTM Enterprise Server

Page 13: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

•  Versión 2 (Java EE 5) o  WS stack o  Rendimiento o  Balanceo de carga o  Clustering o  Proyecto metro : integración entre servicios Web alojados

en tecnología Java con servicios de windows o  ESB o  Java Business Integration (JBI) o  Integración con IDE Netbeans o  Administración centralizada o  Soporte de scripting o  Framework de testing unificado

13

Sun GlassFishTM Enterprise Server

Page 14: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

•  Versión 3 o  Basado en arquitectura modular OSGi (Open Services

Gateway initiative) con capacidad para trabajar plataforma Java EE 6 release

o  Soporta JSF 2.0 o  JAX-RS 1.0 es suportada para construir servicios WEB

RESTful. o  Soporte JRuby o  Maneja extensibilidad y modularidad o  Soporta: aplicaciones Java EE, RoR (Ruby on Rails),

Phobos, Grails

Comparación entre versiones https://glassfish.dev.java.net/public/comparing_v2_and_v3.html

14

Sun GlassFishTM Enterprise Server

Page 15: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Arquitectura Glassfish V.3

15

Page 16: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Comparación Contenedores JEE

Tomado de http://weblogs.java.net/blog/jdcampbell/archive/2008/02/top_java_5_ee_s_1.html

Yes: La característica está disponible en el servidor Available: La característica requiere instalaciones adicionales Partial: la característica no está completamente soportada

16

Page 17: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Aplicación Web

•  Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como imágenes, librerías y clases utilitarias. Hay dos tipos de aplicaciones web: o  Orientadas a Presentación: genera paginas web

interactivas, contiene varios tipos de leguaje como HTML, XML.

o  Orientadas a Servicio: Implementa los endpoint de un servicio web.

17

Page 18: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Aplicación Web

•  Ciclo de Vida de una Aplicación Web. o  Desarrollar el código de los componentes web o  Desarrollar el descriptor del componente web ( Un

descriptor es un archivo en formato xml que contiene la información de configuración para el despliegue de la aplicación web)

o  Compilar los componentes de la aplicación web junto con las clases utilitarias referenciadas por los componentes

o  Empaquetar la aplicación para ser desplegada (opcional) o  Desplegar la aplicación en un contenedor web o  Acceder al url que referencia en la aplicación web, el

puerto de referencia es definido en el contenedor web

18

Page 19: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Aplicación Web

•  Módulo Web Un modulo web JEE corresponde a una aplicación web definida en la especificación de Java Servlet . Es la unidad de recursos web (componentes web, recursos estáticos, librerías) que puede ser desplegada. Un modulo Web tiene la siguiente estructura:

Descriptor de despliegue aplicación web Clases de lado del

servidor: servlets, clases de utilidades, javaBeans.

Archivos JAR de librerías utilizadas por las clases del lado del servidor

Tomado de http://docs.sun.com/app/docs/doc/819-3669/bnadr?a=view

Un directorio que contiene los archivos tag, implementaciones de librerías tag. .

19

Page 20: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Aplicación Web

•  Tecnologías Java para Aplicaciones WEB

Tomado de http://docs.sun.com/app/docs/doc/819-3669/bnadr?a=view

20

Page 21: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Tecnología JSF

•  “La tecnología Java Server Faces (JSF) es un marco de trabajo de interfaces de usuario del lado de servidor para aplicaciones Web basadas en tecnología Java”. (Sun Microsystems) – Estándar de Java (JSR-127)

21

Page 22: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Tecnología JSF

•  Beneficios o  Separación entre el comportamiento y la presentación de una

aplicación web, facilitando el mantenimiento o  Manejo de elementos UI como objetos con estado en el

servidor. o  Contienen conceptos a nivel de capa web y componentes UI

sin limitarlo a tecnologías de scripting particular o lenguaje markup

o  Permite la separación clara de roles en desarrollo o  Estandarización: Los más grandes vendedores de

herramientas de desarrollo colaboran con su mantenimiento. o  Aunque la tecnología JSF incluye una biblioteca de etiquetas

JSP personalizadas para representar los componentes en una página JSP, el API de la tecnología JSF son capas directamente encima de la API Servlet.

22

Page 23: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Tecnología JSF

•  Qué ofrece el framework JSF o  Un conjunto de componentes web prefabricados o  Un modelo de programación orientado a

eventos o  Un modelo de componentes que permiten a

terceros y desarrolladores crear nuevos componentes

23

Page 24: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Tomado de: http://java.sun.com/javaee/5/docs/tutorial/doc/

Tecnología JSF

Funcionamiento JavaServer Faces

24

Page 25: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

25

Tecnología JSF

•  Partes de una aplicación JSF o  Un conjunto de páginas JSP

o  Un conjunto de componentes JavaBeans llamados backing beans, los cuales definen las propiedades y funciones para los componentes UI sobre una pagina JSP

o  Archivos de configuración de la aplicación, los cuales definen las reglas de navegación y configuración de beans u otros objetos como componentes definidos por el cliente

o  Un archivo descriptor de despliegue (web.xml)

o  Conjunto de objetos cliente creados por el desarrollador de la aplicación como: componentes, validadores, conversores o listeners.

o  Un conjunto de tags del cliente para representar los objetos del cliente sobre la página

Page 26: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Tecnología JSF

26

Ciclo de vida de una página JSF (l)

Page 27: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Tecnología JSF

•  Las aplicaciones JSF deben acoplarse a las especificaciones Servlet v.2.3 y JavaServer Pages v.1.2, estas especificaciones son empaquetadas en archivos WAR, los cuales conforman los requerimientos para ejecutar las aplicaciones en un contenedor

•  Un archivo WAR debe contener: o  Un descriptor de despliegue web.xml o  Un conjunto de archivos JAR que contienen las clases o  Un conjunto de clases de la aplicación, paginas JSF y otros

recursos requeridos o  Un archivo de configuración delos recursos de la aplicación

27

Page 28: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Tecnología JSF

•  La estructura de directorio de un archivo WAR es:

•  En Netbeans la estructura de directorios para una aplicación Web es:

28

Page 29: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Tecnología JSF

•  Pasos en el proceso de desarrollo:

o  Mapear la instancia del FacesServlet

o  Crear de las páginas que utilizan los componentes UI y los core tags.

o  Definir de página de navegación en el archivo de configuración de la aplicación.

o  Desarrollar de backing beans

o  Adicionar en el archivo de configuración de la aplicación los managed bean.

29

Page 30: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

•  Mapear la instancia del FacesServlet Todas las aplicaciones JSF deben incluir un mapeo a la instancia de FacesServlet en sus descriptores de despliegue, para identificar las paginas que deben ser administradas en el ciclo de vida de JavaServer Faces. Esta instancia acepta las peticiones, administra el ciclo de vida de la aplicación e inicializa los recursos requeridos por JSF. Ejemplo tomado del descriptor WEB-INF/web.xml, de la aplicación guessNumber (http://docs.sun.com/app/docs/doc/819-3669/bnaph?a=view).

30

Definición Páginas

Page 31: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Definición Páginas

•  Crear las páginas o  Una página JSF tiene los tags usuales de HTML y HEAD

o  Se deben declarar los tags de las librerías para acceder a los componentes del core y de html

1.  Librería de etiquetas personalizadas para componentes UI de HTML identificado con el prefijo h

3.  Librería de etiquetas personalizadas para representar manejadores de eventos, validadores, y conversores.

4.  También es posible utilizar la librería de apache <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %> 31

Page 32: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Definición Páginas

o  Las páginas JSF son representadas con un árbol de componentes definido como view. El tag view representa la raíz del árbol. Se puede utilizar el tag subview para incluir páginas entre otras.

o  Todos los componentes deben estar definidos allí y está definido en la librería core. El tag form representa un componente de entrada. Todos los componentes editables (cajas de texto, botones) se deben ubicar entre el tag form

32

Page 33: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Definición Páginas

•  Componentes UI en paginas JSF. o  Etiquetas. El tag output Text representa las

etiquetas (label). En el ejemplo el valor de la etiqueta está siendo consultado del método get del propiedad minimun y maximun del Backing Bean UserNumberBean

33

Page 34: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Definición Páginas

Imagen: define ruta de la imagen y id Caja de texto: define etiqueta, propiedad de Backing Bean que recibe valor, mensaje de error. Se hace una validación de rango con “validateLongRange”

Botón: define id, acción ( especifica la propiedad de salida que ayuda al mecanismo de navegación a definir cual es la página siguiente) y valor

34

Page 35: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

35

Definición Páginas

Ejemplo de página JSF

Page 36: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Navegación

•  El modelo de navegación de JavaServer Faces facilita definir la navegación entre páginas y mejorar el procesamiento para elegir la secuencia en la cual las páginas son cargadas.

•  La navegación es definida con un conjunto de reglas en el archivo faces-congif.xml, para seleccionar la página que se debe desplegar, a partir de un evento generado por un componente (botón, link).

•  Tipos de navegación o  Navegación Estática o  Navegación Dinámica

36

Page 37: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Navegación

•  Navegación Estática

<h:commandButton label="Login" action="login"/> <navigation-rule> <from-view-id>/index.jsp</from-view-id> <navigation-case> <from-outcome>login</from-outcome> <to-view-id>/welcome.jsp</to-view-id> </navigation-case> </navigation-rule>

37

Page 38: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Navegación

•  Navegación Dinámica o  La navegación depende de cada usuario y de

datos particulares

<h:commandButton label="Login" action="#{loginController.verifyUSer}"/>

String verifyUser() { if (...) return "success" else return "failure" }

38

Page 39: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

•  Definen la secuencia en que son cargadas las páginas de una aplicación.

•  Se deben registrar en el archivo de configuración faces – config.xml

Navegación

39

Page 40: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

40

Navegación

•  La navegación se define en el archivo faces-config.xml

•  Si va a agregar un nuevo archivo de navegación, se debe incluir en la lista de archivos del web.xml

•  En el faces-config.xml de cada módulo se deben especificar las clases que implementan los beans y el alcance de cada uno de estos objetos

Page 41: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

41

Navegación

•  Cada vez que se define un action sobre un bean, este debe retornar un String con el que se especifica la regla de navegación a seguir.

•  En este ejemplo el caso “success” es resultado del llamado al método createRole del RoleBean.

Page 42: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

42

Navegación

•  Menú de navegación •  incluir dentro del archivo common/jsp/menu.jsp el

nuevo elemento

Page 43: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

43

Navegación

•  El faces-config.xml debe incluir las reglas de transición de los estados del menú

Page 44: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Clases JAVA (Java Beans)

•  Su propósito es separar los componentes UI de los objetos que ejecutan el procesamiento y mantienen los datos

•  Facilitan la comunicación entre los beans reales de la aplicación y la UI.

•  Responsabilidades o  Interactúan con el modelo

o  Escuchan eventos de la vista

o  Dan respuesta a las solicitudes

44

Page 45: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

45

•  Getters y setters para sus propiedades

•  Métodos de acción

o  eventos de la capa web implementados en métodos de los beans.

o  actions

  Ejecutan acciones sobre el modelo y dejan los resultados en los atributos del bean

  siempre termina con una regla de navegación (por lo que se entiende que un action tiene tipo de retorno String)

o  action listeners

  Método para poblar información antes de cargar un jsp

  recibe un evento como parámetro y no retorna nada

Uso de un Web Bean en un JSP (para visualizar un attr)

< ……… value =“#{bookListBean.books}”/>

Backing Beans

Page 46: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  El Backing Bean define propiedades y métodos que son asociados con los componentes UI usados en la página. En el ejemplo el valor de entrada del componente se mantendrá en la propiedad useNumber del Backing Bean UserNumberBean.

<h:inputText id="userNo" label="User Number" value="#{UserNumberBean.userNumber}"> ... </h:inputText>

46

Page 47: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

47

Backing Beans

Page 48: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Backing Beans

48

Page 49: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Configuración de un Bean JavaServer Faces soporta la administración de

bean y permite realizar: o  Configurar beans o  Inicializar las propiedades de los bean con

valores determinados o  Mantener los beans en un ámbito o  Exponer los beans para que puedan ser

accedidos.

49

Page 50: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Los beans se configuran en el archivo faces-config.xml. Este archivo es procesado cuando la aplicación inicia, si una página hace referencia a un bean, la implementación JavaServer Faces inicializa de acuerdo a su configuración en este archivo.

•  Los beans se pueden crear usando elementos managed-bean, los cuales representan una instancia de una clase bean que debe existir en la aplicación. En tiempo de ejecución JSF implementa procesos para el managed-bean.

50

Page 51: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Ejemplo Declaración de Managed-Bean <managed-bean> <managed-bean-name>UserNumberBean</managed-bean-

name> <managed-bean-class>guessNumber.UserNumberBean</

managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>minimum</property-name> <property-class>long</property-class> <value>0</value> </managed-property> </managed-bean>

51

Page 52: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Backing Beans

•  Cada managed-bean contiene las siguientes propiedades: o  Managed-bean-name: es único y se mantiene en el ámbito de la

aplicación. Este nombre debe coincidir con el valor que se utiliza en las páginas para invocar el bean

o  Managed-bean-class: define el nombre completo de la clase componente JavaBeans utilizados para crear una instancia del bean

o  Managed-bean-scope: define el ámbito en el cual el bean será almacenado (request, session, application, none)

•  El managed-bean contiene el elemento property-name, la cual debe coincidir con el nombre de la propiedad correspondiente en el bean. El valor que se define debe ser el mismo de la propiedad.

52

Page 53: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

JSF Tags

•  Los tags están definidos en dos librerías principales o  Core o  HTML

•  Requieren importación

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

53

Page 54: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

JSF Tags

•  Algunos JSF Core Tags o  view o  subview o  Attribute o  param o  facet o  actionListener o  valueChangeListener o  converter o  validator o  validateLength o  selectitem

54

Page 55: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

55

JSF Tags

Volver

<h:selectManyCheckboxlist>

<h:selectOneMenu> <h:selectOneListbox>

<h:selectOneRadio> <h:selectManyMenu>

<h:selectManyListbox>

Page 56: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Conversión y Validación

•  JSF ofrece soporte para conversión y validación de datos o  Conversión de números y fechas

  ConvertNumber   convertDateTime

o  Manejo de errores de conversión   <h:message>

<h:inputText value="#{payment.date}"> <f:convertDateTime pattern="mm/yyyy"/> </h:inputText>

<h:outputText value="#{payment.amount}"> <f:convertNumber type="currency" </h:outputText>

56

Page 57: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

57

<h:outputText value="#{user.dateOfBirth}"> <f:convertDateTime type="date" dateStyle="short"/> </h:outputText>

*** Los conversores tienen encuenta los conceptos de internacionalización y localización.

Ejemplos de conversores

Page 58: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Conversión y Validación

•  Validaciones o  Longitud de cadenas o  Rangos de números o  Valores requeridos

<h:inputText id="card" value="#{payment.card}"> <f:validateLength minimum="13" </h:inputText>

58

Page 59: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Manejo de Eventos

•  Aplicaciones Web o  Deben reaccionar a eventos de usuario

  Seleccionar elementos de un menú   Click en un botón

o  JSF Soporte tres tipos de eventos   Cambio de valores

  Disparados por componentes input (h:inputText)   Acciones

  Disparados por componentes command (h:commandButton)

  Fases (Phase)   Disparados dentro del ciclo de vida de la JSF

59

Page 60: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Manejo de Eventos

•  Eventos por Cambio de Valor

<h:selectOneMenu value="{form.country}" onchange="submit()"> valueChangeListener="{form.countryChanged}" <f:selectItems value="{form.countryNames}"> </h:selectOneMenu>

60

Page 61: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Manejo de Eventos

•  Eventos de Acción

<h:commandButton image="pan.jpg"> actionListener="#{tienda.listen}" action="#{tienda.act}" </h:commandButton> ------- public class Tienda { private String outcome; .... public void listen (ActionEvent e) { FacesContext context = FacesContext.getCurrentInstance(); String clienteId = e.getComponent().getClienteId(context); ....

if(...) outcome = "success"; } public String act () { return outcome; } }

61

Page 62: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

62

Manejo de Eventos

Page 63: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

63

Ejemplo:

Page 64: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

64

Agenda

  Conceptos JSP   Desarrollo aplicaciones Web

Page 65: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

65

Proceso de Desarrollo

  Creación del prototipo en html   Definición de la forma en que interactuarán los usuarios con el

requerimiento

  Diseño   Identificación de los estados en los que el usuario interactúa

con el sistema

  Implementación   Creación de las páginas JSP e implementación de los web

beans

Page 66: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

66

Creación del prototipo en html

  Crear páginas html que muestren cómo el usuario va a visualizar y a interactuar con un requerimiento

  Identificar estilos, formas, imágenes, íconos y convenciones

Page 67: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

67

Diseño

  Diseñar JSPs y Web Beans que contienen la información que se va a desplegar en cada jsp.

  Los Web Beans contienen los métodos con los cuales se van a hacer las acciones sobre el sistema.   Un Bean por cada página de presentación de cada

componente   Un Bean que contiene el listado de modelBO.

Page 68: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

68

Diseño: Diagrama de Estados

  Todos los diagramas deben empezar por lo menos con un action   Los actions pueden ser llamados desde el menú o desde un

botón dentro del sistema   Si hay una acción en el Bean antes de mostrar el jsp se debe

tener un actionListener.

  Las transiciones de los estados son el resultado de pasar de una página a otra o interactuar con algún Bean.

  Todos los diagramas deben finalizar en una jsp.

Page 69: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

69

Diagrama de Estados: Ejemplos

  Requerimientos de Listar

Page 70: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

70

Diagrama de Estados: Ejemplos

  Requerimientos de creación

Page 71: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

71

Diagrama de Estados

  Si se pasa a una jsp con una acción de navegación se debe usar la palabra action al final.

  Si se pasa a una jsp con el resultado de una acción de un Bean se debe usar la palabra “success”.

  Al pasar a un Bean se debe usar el método/propiedad que se va a llamar.

Page 72: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

72

Guía de Implementación

  Implementar WEB Delegates   Intermedian relación entre Web Beans y Beans de Sesión

  Implementar Web Beans   Implementar getters y setters de sus atributos (incluyendo los del

BO ), los action y action listeners   Ajustar Archivo de configuración

  Declarar la nueva navegación y los web beans   Adicionar el nuevo requerimiento al menú   Implementar JSPs

  A partir del prototipo adicionar los tags de JSF y los componentes adicionales

  Ajustes al packaging   Los nuevos archivos y módulos deben quedar incluidos dentro

del war que se construye

Page 73: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

73

2. Posibles escenarios del ciclo de vida A.  Petición No-Faces genera una Respuesta Faces: Enlace de una página HTML que abre una página que contiene

componentes JSF

B.  Petición Faces genera una Respuesta No-Faces

Evitar la fase de “renderizar” la Respuesta

C.  Una Petición Faces genera una Respuesta Faces

Ciclo de vida de una página JSF

Page 74: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

74

Página Inicial listBooks.jsp

Page 75: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

75

Eliminar

Page 76: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

76

Ejemplo

Page 77: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

77

Ejemplo

Page 78: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Ejemplo

78

Page 79: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

79

Ejemplo

Page 80: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

Ejemplo

80

Page 81: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

81

Ejercicio

  Construya el Diagrama de estado para el proyecto

Page 82: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

82

Material

•  Este material fue preparado por •  Nicolás López •  Pilar Villamil

•  Este material fue revisado y actualizado por •  Darío Correal •  Yeimi Peña

Page 83: Contenedores y JavaServer Faces › ~isis...• Aplicación Web Es una extensión dinámica de un servidor web o de aplicación. Consta de componentes web, archivos estáticos como

DEPARTAMENTO DE SISTEMAS

83

Referencias

  Presentación JavaServer Faces. Betsy Lanchero, 2006-2   The Java EE 5 Tutorial . Sun. Junio 16, 2006   Bergsten, Hans. JavaServer Faces. O’Reilly. 2004   Horstmann, Cay. Core JavaServer Faces. Prentice Hall. 2004.   http://www.coreservlets.com   http://java.sun.com/j2ee/javaserverfaces   JSF Web Steps – QualDev Group   http://chie.uniandes.edu.co/~changeset/wiki/doku.php?

id=development:resources:tutorials:development:jsfwebsteps   http://co.sun.com/practice/software/glassfish/landing/que_es.html   http://docs.sun.com/app/docs/doc/820-7695/fvxzc?a=browse   http://docs.sun.com/app/docs/doc/819-3669/bnadr?a=view