Java Server Faces.

1 Java Server Faces ...
Author: Valeriano Calderon
0 downloads 2 Views

1 Java Server Faces

2 Contenidos 1. ¿Qué es JSF? 2. ¿En qué tecnologías se basa?3. Los conceptos clave de la tecnología 4. Integración con otros frameworks 5. Resumen 6. Referencias.

3 1. ¿Qué es 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. Los dos componentes principales son: Una librería de etiquetas para JSP Una API para manejo de eventos, validadores, etc. taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

4 1. ¿Qué es JSF? Permite a los desarrolladores pensar en términos de componentes, eventos, backing beans y otras interacciones, en vez de hablar de peticiones, respuestas y marcas. JSF promete reutilización, separación de roles, facilidad de uso de las herramientas. JSF tiene una meta específica: hacer el desarrollo web más rápido y fácil.

5 1. ¿Qué es JSF? JSF (en J2EE) es similar a ASP .NET:Interfaz de usuario dirigida por eventos, Abstracción del protocolo HTTP Tienen correspondencia en JSF HTML Controles en ASP .NET De validación De servidor

6 2. ¿En qué tecnologías se basa?HTTP Servlets JavaBeans JSP

7 2. ¿En qué tecnologías se basa?Servlets Amplía la funcionalidad del servidor Posterior al CGI API Java Se ejecuta en un contenedor de aplicaciones Hasta JSP, único modo de generar páginas web dinámicas

8 2. ¿En qué tecnologías se basa?Servlets (ejemplo) MyTableData tableData = MyDAO.queryData(); PrintWriter writer = response.getWriter(); writer.println("

");for (int i=0; i writer.println("");writer.println("");writer.println("");}writer.println("
"); writer.println(tableData.getData()[i]); writer.println("
");

9 2. ¿En qué tecnologías se basa?Servlets Inconvenientes: Poco legible Mantenimiento costoso El diseñador gráfico debe saber Java A cada cambio: recompilar, empaquetar, desplegar. Uso actual de los servlets: Controlador en la arquitectura MVC Preprocesamiento de peticiones

10 2. ¿En qué tecnologías se basa?Java Server Pages (JSP) Páginas HTML con scripts (por defecto Java) Se traduce a un servlet en la primera petición Semánticamente equivalente a los servlets Facilitan el desarrollo y mantenimiento

11 2. ¿En qué tecnologías se basa?JSP 1.x (Ejemplo de programación en sus inicios) <% MyTableData tableData = MyDAO.queryData(); %>

for (int i = 0; i < tableData.getData().length; i++) {<% }%>
<%= tableData.getData()[i] %>

12 2. ¿En qué tecnologías se basa?JSP 1.x Facilidad para manejo de JavaBeans

“/>

13 2. ¿En qué tecnologías se basa?JSP 1.x Otras etiquetas estándar de JSP flush=“true” /> value=“ F” />

14 2. ¿En qué tecnologías se basa?JSP 1.x Etiquetas de extensión Alternativa a los JavaBeans para encapsular la lógica de negocio “Componentes” para la edición web Para usar declarativamente la lógica de negocio Ejemplo:

15 2. ¿En qué tecnologías se basa?JSP 1.x (Ejemplo de una nueva etiqueta)

Usuario

Nombre

Correo

<%=identificador%> <%=nombre%> <%=correo%>

16 2. ¿En qué tecnologías se basa?JSP (Código de la nueva etiqueta) (1 de 2) public class UsuariosTag extends BodyTagSupport { private Collection usuarios; private Iterator it; public void setUsuarios(Collection usuarios) { this.usuarios = usuarios; } public void doInitBody() throws JspTagException { it = usuarios.iterator(); Cliente c = (Cliente) it.next(); if (c == null) return; else { pageContext.setAttribute("identificador", c.getUsuario()); pageContext.setAttribute("nombre", c.getNombre()); pageContext.setAttribute("correo", c.getCorreo());

17 2. ¿En qué tecnologías se basa?JSP (Código de la nueva etiqueta)(2 de 2) public int doAfterBody() throws JspTagException { BodyContent bodyContent = getBodyContent(); if (bodyContent != null) { try { bodyContent.getEnclosingWriter(). print(bodyContent.getString()); bodyContent.clearBody(); } catch (Exception e) { throw new JspTagException(e.getMessage());} } if (it.hasNext()) { Cliente c = (Cliente) it.next(); pageContext.setAttribute("identificador", c.getUsuario()); pageContext.setAttribute("nombre", c.getNombre()); pageContext.setAttribute("correo", c.getCorreo()); return EVAL_BODY_TAG; } else return SKIP_BODY;

18 2. ¿En qué tecnologías se basa?JSP Standard Tag Library (JSTL) Librería de etiquetas para JSP. No es parte de JSP ni JSF, los complementa Precursor: librerías de etiquetas de Struts Formado por 4 librerías: core: funciones script básicas xml: procesamiento de xml fmt: internacionalización y formato sql: acceso a base de datos

19 2. ¿En qué tecnologías se basa?JSTL (Ejemplo con scriptlets, sin JSTL) page import=“com.ktaylor.model.AddressVO, java.util.*” %> <% List addresses = (List)request.getAttribute("addresses"); Iterator addressIter = addresses.iterator(); while(addressIter.hasNext()) { AddressVO address =(AddressVO)addressIter.next(); if((null != address) && (null != address.getLastName()) && (address.getLastName().length() > 0)) { %> =address.getLastName()%>
} else { N/A
<% } } %>

20 2. ¿En qué tecnologías se basa?Librería básica JSTL (Ejemplo sin scriptlets, con JSTL) taglib prefix="c"uri="http://java.sun.com/jstl/core" %>
N/A


Etiqueta Iterador Lenguaje de expresiones

21 2. ¿En qué tecnologías se basa?JSP 2.0 Evolución de JSP 1.2 Separación completa de roles Todavía se habla de cabeceras, sesión, … Elementos principales: Lenguaje de expresiones (EL) Ficheros de etiquetas SimpleTag vs Tag Mejorada la sintaxis XML

22 2. ¿En qué tecnologías se basa?JSP 2.0 Lenguaje de expresiones (EL) Mismo EL que JSTL, pero soportado nativamente Meta: que lo use gente que no sabe programar Inspirado en JavaScript y XPath Se puede desactivar los scriptlets y habilitar EL ${ }

23 2. ¿En qué tecnologías se basa?JSP 2.0 Ejemplos de EL ((Duck) pageContext.getAttribute(”duck”)).getBeakColor()  ${duck.beakColor} <%= foo.getBar() %>  ${foo.bar} Sin EL Con EL

24 2. ¿En qué tecnologías se basa?JSP 2.0 Ficheros de etiquetas Escribir etiquetas sólo con código JSP Mecanismo de reutilización para autores de páginas Empaquetado de la aplicación más flexible Etiquetas en /WEB-INF/tags TLD implícito taglib prefix="..." tagdir="/WEB-INF/tags" %>

25 2. ¿En qué tecnologías se basa?JSP 2.0 Ejemplo de fichero de etiqueta. tag name=”tableTag” %> attribute name=”items” %>

Name IQ
${i.fullName} ${i.IQ}

26 2. ¿En qué tecnologías se basa?JSP 2.0 La anterior API para definir nuevas etiquetas (Tag) Tag handler doStartTag() doEndTag() doCatch() doFinally() Tag attributes body doInitBody() doAfterBody() release() Antes

27 2. ¿En qué tecnologías se basa?JSP 2.0 Nueva API para definir etiquetas (SimpleTag) Tag handler Tag attributes body (no scriptlets) doTag() Ahora

28 2. ¿En qué tecnologías se basa?JSP 2.0 Mejorada la sintaxis XML Antes: JSP como documento  Ahora: JSP como espacio de nombres  xmlns:c="http://java.sun.com/jsp/jstl/core">

29 2. ¿En qué tecnologías se basa?

30 3. Los conceptos clave de la tecnologíaComponentes de interfaz de usuario Eventos Beans manejados Validadores Internacionalización y localización Conversores Navegación

31 3. Los conceptos clave de la tecnologíaLos componentes de la interfaz de usuario Son JavaBeans Se ejecutan en el lado del servidor Tienen estado Se organizan en árboles de vistas Representación específica: renderer Familia de representaciones: kits de renderer taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

32 3. Los conceptos clave de la tecnologíaLos componentes de la interfaz de usuario

33 3. Los conceptos clave de la tecnologíaLos componentes de la interfaz de usuario Ejemplo (traducción de JSF a HTML) (1 de 2) Enter address: required="true"/>

34 3. Los conceptos clave de la tecnologíaLos componentes de la interfaz de usuario Ejemplo (traducción de JSF a HTML) (2 de 2) Enter address: Validation Error: Value is required.

35 3. Los conceptos clave de la tecnologíaEventos Los componentes UI generan eventos Los listeners se implementan en backing beans o clases aparte 4 tipos: Value-change events Action events Data model events Phase events

36 3. Los conceptos clave de la tecnologíaEventos Ejemplo: value-change event valueChangeListener=“#{myForm.processValueChanged}“ /> public void processValueChanged(ValueChangeEvent event){ HtmlInputText sender = (HtmlInputText)event.getComponent(); sender.setReadonly(true); changePanel.setRendered(true); }

37 3. Los conceptos clave de la tecnologíaEventos Ejemplo: action event actionListener="#{myForm.doIt}“ /> public void doIt(ActionEvent event){ HtmlCommandButton button = (HtmlCommandButton)event.getComponent(); button.setValue("It's done!"); }

38 3. Los conceptos clave de la tecnologíaBeans manejados (Managed beans) Beans de respaldo (Backing beans) JavaBeans especializados Contienen datos de componentes UI, implementan métodos de oyentes de eventos Controlador en el Modelo Vista Controlador(MVC) Backing bean por página, formulario, … Componente UI y backing bean están sincronizados Son backing beans que usan la facilidad Manager Bean Creation Facility

39 3. Los conceptos clave de la tecnologíaBeans Manejados (Managed Beans) Ejemplo de declaración (faces-config.xml): helloBean com.virtua.jsf.sample.hello.HelloBean session

40 3. Los conceptos clave de la tecnologíaBeans Manejados (Managed Beans) Ejemplo de uso: value=“#{helloBean.numControls}“ /> Utiliza EL parecido al de JSP 2.0

41 3. Los conceptos clave de la tecnologíaValidadores Aseguran la correcta introducción de valores Evitan escribir código Java y/o Javascript JSF provee de validadores estándar Podemos crear validadores propios Generan mensajes de error 3 tipos: A nivel de componente UI Métodos validadores en los backing beans (validator) Clases validadoras (etiqueta propia anidada)

42 3. Los conceptos clave de la tecnologíaValidadores: Estándar de JSF: campo con valor requerido, validadores de la longitud de una cadena, y validadores de rango para enteros y decimales Ejemplos: required=“true” />

43 3. Los conceptos clave de la tecnologíaInternacionalización y localización Internacionalización: habilidad de una aplicación de soportar diferentes lenguajes dependiendo de la región del planeta en que nos encontremos. Localización: El proceso de modificar una aplicación para que soporte la lengua de una región. JSF ofrece el soporte, no las traducciones El usuario indica su lengua mediante el navegador

44 3. Los conceptos clave de la tecnologíaInternacionalización y localización Ejemplo (declaración en faces-config.xml): en en en_US es_ES CustomMessages

45 3. Los conceptos clave de la tecnologíaInternacionalización y localización Ejemplo (resource bundles y uso): LocalizationResources_en.properties halloween=Every day is like Halloween. numberOfVisits=You have visited us {0} time(s), {1}. Rock on! toggleLocale=Translate to Spanish helloImage=../images/hello.gif

46 3. Los conceptos clave de la tecnologíaConversores Convierten el valor de un componente desde y a una cadena Cada componente se asocia a un sólo conversor El renderer lo usa para saber mostrar los datos JSF tiene definidos para fechas, números, etc. Podemos crear los nuestros propios Tienen en cuenta la localización y formato

47 3. Los conceptos clave de la tecnologíaConversores Muestran un error si la entrada no es correcta Por defecto JSF asigna uno adecuado Se pueden definir de 4 formas: Etiqueta propia anidada en la del componente En la etiqueta del componente con converter Etiqueta anidada Etiquetas predefinidas (otras) anidadas Conversores no predefinidos

48 3. Los conceptos clave de la tecnologíaConversores Ejemplo (conversor predefinido): 03/18/06 18/03/06

49 3. Los conceptos clave de la tecnologíaNavegación Habilidad de pasar de una página a la otra Lo controla el manejador de navegación Correspondencia salida/página: caso de navegación Hay que definir las reglas de navegación

50 3. Los conceptos clave de la tecnologíaNavegación Ejemplo de declaración (faces-config.xml): /login.jsp success /mainmenu.jsp failure /login.jsp o Página origen acción Página destino

51 4. Integración con otros frameworksJSF con Struts

52 4. Integración con otros frameworksJSF con Spring e Hibernate

53 5. Resumen JSF es una tecnología de interfaces de usuario centrada en el MVC, interesante y en creciente auge Pretende reducir el salto entre las aplicaciones de escritorio y las web, abstrayendo del protocolo HTTP Promete reutilización, separación de roles, facilidad de uso y reducir el time-to-market Se puede combinar con otros frameworks para obtener un soporte más potente

54 6. Referencias “Java Server Faces In Action”, K.D. Mann Ed. Manning. 2005 Integrating JSP/JSF and XML/XSLT JSF KickStart: A Simple JavaServer Faces Application Integración de JSF, Spring e Hibernate para crear una Aplicación Web del Mundo Real JSP 2.0 and JSTL: Principles and Patterns web.princeton.edu/sites/isapps/jasig/2002WinterOrlando/presentations/jsp20-jasig-2002.ppt