Académique Documents
Professionnel Documents
Culture Documents
Contenidos
1. Qu es JSF? 2. En qu tecnologas se basa? 3. Los conceptos clave de la tecnologa 4. Integracin con otros frameworks 5. Resumen 6. Referencias.
1. Qu es JSF?
La tecnologa Java Server Faces (JSF) es un marco
de trabajo de interfaces de usuario del lado de servidor para aplicaciones Web basadas en tecnologa Java.
1. Qu es JSF?
Permite a los desarrolladores pensar en trminos
de componentes, eventos, backing beans y otras interacciones, en vez de hablar de peticiones, respuestas y marcas. facilidad de uso de las herramientas.
JSF promete reutilizacin, separacin de roles, JSF tiene una meta especfica: hacer el
desarrollo web ms rpido y fcil.
1. Qu es JSF?
JSF (en J2EE) es similar a ASP .NET:
Interfaz de usuario dirigida por eventos, Abstraccin del protocolo HTTP
Tienen correspondencia en JSF
2. En qu tecnologas se basa?
HTTP Servlets JavaBeans JSP
2. En qu tecnologas se basa?
Servlets
Ampla la funcionalidad del servidor Posterior al CGI API Java Se ejecuta en un contenedor de aplicaciones Hasta JSP, nico modo de generar pginas web dinmicas
2. En qu tecnologas se basa?
Servlets (ejemplo)
MyTableData tableData = MyDAO.queryData(); PrintWriter writer = response.getWriter(); writer.println("<table border=\"1\">"); for (int i=0; i<tableData.getData().length; i++){ writer.println("<tr>"); writer.println("<td>"); writer.println(tableData.getData()[i]); writer.println("</td>"); writer.println("</tr>"); } writer.println("</table>");
2. En qu tecnologas se basa?
Servlets
Inconvenientes: Poco legible Mantenimiento costoso El diseador grfico debe saber Java A cada cambio: recompilar, empaquetar, desplegar. Uso actual de los servlets: Controlador en la arquitectura MVC Preprocesamiento de peticiones
2. En qu tecnologas se basa?
Java Server Pages (JSP)
Pginas HTML con scripts (por defecto Java) Se traduce a un servlet en la primera peticin Semnticamente equivalente a los servlets Facilitan el desarrollo y mantenimiento
2. En qu tecnologas se basa?
JSP 1.x (Ejemplo de programacin en sus inicios)
<% MyTableData tableData = MyDAO.queryData(); %> <table border="1"> <% for (int i = 0; i < tableData.getData().length; i++) { %> <tr> <td> <%= tableData.getData()[i] %> </td> </tr> <% }%> </table>
2. En qu tecnologas se basa?
JSP 1.x
Facilidad para manejo de JavaBeans
<jsp:useBean id=user class=Cliente scope=session> <form method=POST action=actualiza.ctrl> <input type=text name=nombre value= <jsp:getProperty name=user property=name/> /> </form> </jsp:useBean>
2. En qu tecnologas se basa?
JSP 1.x
Otras etiquetas estndar de JSP
<jsp:forward page=registro.jsp <jsp:include page=/servlet/ServletCookie flush=true /> <jsp:setProperty name=cliente property=nif value=53146712F />
2. En qu tecnologas se basa?
JSP 1.x
Etiquetas de extensin Alternativa a los JavaBeans para encapsular la
lgica de negocio Componentes para la edicin web Para usar declarativamente la lgica de negocio Ejemplo:
<ssdd:enlace URL=index.jsp textoinicio/>
2. En qu tecnologas se basa?
JSP 1.x (Ejemplo de una nueva etiqueta)
<table border="1"> <tr> <td width="20%"><p align="center"><b>Usuario</b></td> <td width="50%"><p align="center"><b>Nombre</b></td> <td width="30%"><p align="center"><b>Correo</b></td> </tr> <ssdd:listaUsuarios usuarios="<%= usuarios%>"> <tr> <td with="20% align="center"><%=identificador%></td> <td with="50%" align="center"><%=nombre%></td> <td with="30%" align="center"><%=correo%></td> </tr> </ssdd:listaUsuarios> </table>
2. En qu tecnologas se basa?
JSP (Cdigo 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()); return; } }
2. En qu tecnologas se basa?
JSP (Cdigo 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; } }
2. En qu tecnologas se basa?
JSP Standard Tag Library (JSTL)
Librera de etiquetas para JSP. No es parte de JSP ni JSF, los complementa Precursor: libreras de etiquetas de Struts Formado por 4 libreras: core: funciones script bsicas xml: procesamiento de xml fmt: internacionalizacin y formato sql: acceso a base de datos
2. En qu tecnologas 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()%><br/> <% } else { %> N/A<br/> <% } } %>
2. En qu tecnologas se basa?
JSTL (Ejemplo sin scriptlets, con JSTL)
Librera bsica <%@ taglib prefix="c"uri="http://java.sun.com/jstl/core" %> <c:forEach items="${addresses}" var="address"> <c:choose> <c:when test="${not empty address.lastName}" > <c:out value="${address.lastName}"/><br/> </c:when> Etiqueta <c:otherwise> N/A<br/> Lenguaje de expresiones Iterador </c:otherwise> </c:choose><br/> </c:forEach><br/>
2. En qu tecnologas se basa?
JSP 2.0
Evolucin de JSP 1.2 Separacin completa de roles Todava se habla de cabeceras, sesin, Elementos principales: Lenguaje de expresiones (EL) Ficheros de etiquetas SimpleTag vs Tag Mejorada la sintaxis XML
2. En qu tecnologas 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 ${ <expresin> }
2. En qu tecnologas se basa?
JSP 2.0
Ejemplos de EL
Sin EL Con EL ((Duck) pageContext.getAttribute(duck)).getBeakColor()
${duck.beakColor}
2. En qu tecnologas se basa?
JSP 2.0
Ficheros de etiquetas Escribir etiquetas slo con cdigo JSP Mecanismo de reutilizacin para autores de pginas Empaquetado de la aplicacin ms flexible
Etiquetas en /WEB-INF/tags TLD implcito
<%@ taglib prefix="..." tagdir="/WEB-INF/tags" %>
2. En qu tecnologas se basa?
JSP 2.0
Ejemplo de fichero de etiqueta.
<%@ tag name=tableTag %> <%@ attribute name=items %> <table width= bgcolor=> <th> <td>Name</td> <td>IQ</td> </th> <c:forEach var=i items=${items}> <tr> <td>${i.fullName}</td> <td>${i.IQ}</td> </tr> </c:forEach> </table>
2. En qu tecnologas se basa?
JSP 2.0
La anterior API para definir nuevas etiquetas (Tag)
Tag attributes doStartTag() doEndTag() Tag body
doCatch()
release()
Tag handler
doInitBody()
Antes
doAfterBody()
doFinally()
2. En qu tecnologas se basa?
JSP 2.0
Nueva API para definir etiquetas (SimpleTag)
Tag attributes doTag() Tag body
Tag handler
(no scriptlets)
Ahora
2. En qu tecnologas se basa?
JSP 2.0
Mejorada la sintaxis XML
2. En qu tecnologas se basa?
<%@
Eventos
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
Eventos
Ejemplo: value-change event
<h:inputText valueChangeListener=#{myForm.processValueChanged} />
Eventos
Ejemplo: action event
<h:commandButton id="redisplayCommand" type="submit" value="Redisplay" actionListener="#{myForm.doIt} />
mtodos de oyentes de eventos Controlador en el Modelo Vista Controlador(MVC) Backing bean por pgina, formulario, Componente UI y backing bean estn sincronizados
Son backing beans que usan la facilidad Manager Bean Creation Facility
Validadores
Aseguran la correcta introduccin de valores Evitan escribir cdigo Java y/o Javascript JSF provee de validadores estndar Podemos crear validadores propios Generan mensajes de error 3 tipos: A nivel de componente UI Mtodos validadores en los backing beans (validator) Clases validadoras (etiqueta propia anidada)
Internacionalizacin y localizacin
Ejemplo (declaracin en faces-config.xml):
<application> <locale-config> <default-locale>en</default-locale> <supported-locale>en</supported-locale> <supported-locale>en_US</supported-locale> <supported-locale>es_ES</supported-locale> </locale-config> <message-bundle>CustomMessages</message-bundle> </application>
<h:outputText value="#{bundle.halloween}"/>
Conversores
Convierten el valor de un componente desde y a una cadena Cada componente se asocia a un slo conversor El renderer lo usa para saber mostrar los datos JSF tiene definidos para fechas, nmeros, etc. Podemos crear los nuestros propios Tienen en cuenta la localizacin y formato
Se pueden definir de 4 formas: Etiqueta propia anidada en la del componente En la etiqueta del componente con converter Etiqueta <f:converter> anidada Etiquetas predefinidas (otras) anidadas
Conversores
Ejemplo (conversor predefinido):
<h:outputText value="#{user.dateOfBirth}"> <f:convertDateTime type="date" dateStyle="short"/> </h:outputText>
03/18/06
18/03/06
<navigation-rule> <from-view-id>/login.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/mainmenu.jsp</to-view-id> </navigation-case> accin <navigation-case> <from-outcome>failure</from-outcome> <to-view-id>/login.jsp</to-view-id> </navigation-case> Pgina </navigation-rule>
destino
5. Resumen
JSF es una tecnologa 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 reutilizacin, separacin de roles, facilidad de uso y reducir el time-to-market Se puede combinar con otros frameworks para obtener un soporte ms potente
6. Referencias
Java Server Faces In Action, K.D. Mann Ed. Manning. 2005 Integrating JSP/JSF and XML/XSLT
http://www.theserverside.com/articles/article.tss?l=BestBothWorlds