JavaServer Pages Standard Tag Library (JSTL) Dr. Diego Lz. de Ipiña Gz. de Artaza.

1 JavaServer Pages Standard Tag Library (JSTL) Dr. Diego ...
Author: Eduardo Luna Maidana
0 downloads 1 Views

1 JavaServer Pages Standard Tag Library (JSTL) Dr. Diego Lz. de Ipiña Gz. de Artaza

2 JSTL Objetivo: Simplificar y agilizar el desarrollo de aplicaciones web 3ra iteración después de servlets y JSPs Sirven para la generación dinámica de páginas web

3 Instalar JSTL Asumimos que ya has instalado Tomcat 4.1 en tu máquina, si no consíguelo de: http://apache.rediris.es/jakarta/tomcat- 4/v4.1.29/bin/jakarta-tomcat-4.1.29-LE-jdk14.exe http://apache.rediris.es/jakarta/tomcat- 4/v4.1.29/bin/jakarta-tomcat-4.1.29-LE-jdk14.exe Bajar JSTL de: http://apache.rediris.es/jakarta/taglibs/standard- 1.0/jakarta-taglibs-standard-current.zipjakarta-taglibs-standard-current.zip Copiar archivos standard.jar y jstl.jar a Tomcat4.1\common\lib

4 Usar JSTL en una aplicación Web Para cualquier aplicación web desde la cual quieres usar JSTL, copiar los ficheros.tld al directorio WEB-INF de tu aplicación web. Edita el web.xml de tu aplicación web añadiendo las siguientes entradas http://java.sun.com/jstl/fmt /WEB-INF/fmt.tld http://java.sun.com/jstl/core /WEB-INF/c.tld http://java.sun.com/jstl/sql /WEB-INF/sql.tld http://java.sun.com/jstl/x /WEB-INF/x.tld Estas entradas permiten a tu aplicación web usar las librerías de etiquetas JSTL que usan el lenguaje de expresiones. La posición de estas entradas tiene importancia.

5 Características Las páginas JSTL son también páginas JSP. JSTL es un superconjunto de JSP. JSTL provee un conjunto de cuatro librerías estándar: Core Internationalization/format XML y SQL Además JSTL define un nuevo lenguaje de expresiones llamado EL Una etiqueta JSTL corresponde a una acción; llamándolas acción nos indica que añaden comportamiento dinámico a una, de otra manera, página estática.

6 Soporte para EL I El lenguaje de expresiones EL simplemente define un poderoso mecanismo para expresar expresiones simples en una sintáxis muy sencilla. Es algo entre JavaScript y Perl. Su combinación con las etiquetas de las 4 librerías antes mencionadas proveen mucha flexibilidad y poder para el desarrollo de páginas dinámicas. En EL las expresiones están delimitadas por ${ }.

7 Soporte para EL II Algunos ejemplos del uso de EL son: ${anExpression} ${aList[4]} ${aList[someVariable]}  acceso a un elemento de una colección ${anObject.aProperty}  acceso a la propiedad de un objeto ${anObject["aPropertyName"]}  entrada en un mapa con propiedad aPropertyName ${anObject[aVariableContainingPropertyName]} Existen una serie de variables implícitas definidas en EL: pageContext : el contexto del JSP actual pageScope, requestScope, sessionScope, and applicationScope : colecciones de mapas que mapean nombres de variables en esos contextos a valores param and paramValues : parámetros pasados con la petición de la página, lo micmo que en JSP header and headerValues : cabeceras pasadas en la petición de la página cookie : mapa que mapea nombres de cookies a los valores de las mismas

8 JSTL Tag Libraries LibreríaPrefijo librería ELPrefijo de Librería Request-time (RT) Corecc_rt Internationalization/form at fmtfmt_rt SQL/DB supportsqlsql_rt XMLxx_rt

9 Uso de las librerías JSTL en un JSP La siguiente directiva ha de incluirse al comienzo de la página: Para utilizar una etiqueta de una librería simplemente se ha de preceder con el prefijo de la librería utilizada:

10 La librería de etiquetas Core Permiten llevar a cabo las siguientes acciones: Visualizar/asignar valores y manejar excepciones Control de flujo Otras acciones de utilidad

11 Visualizar/asignar valores y manejar excepciones con Core I Para visualizar valores utilizamos: of those items in stock. escapeXml indica si hay que aplicar códigos de escape a los caracteres, & y. Asignar una variable en una página: scope indica el contexto en el que se define la variable También podemos asignar el contenido de una etiqueta a una variable:

12 Visualizar/asignar valores y manejar excepciones con Core II Normalmente en un JSP o incluimos un bloque try/catch o usamos la directiva errorPage : Para borrar una variable se puede utilizar

13 Control de flujo con JSTL Core I Para llevar a cabo simples condiciones ( c:if ): You are the millionth visitor to our site! Congratulations! El switch de un lenguaje de programación se puede emular con c:choose :............

14 Control de flujo con JSTL Core II Para iterar sobre una colección se define c:foreach. Se pueden especificar índice de comienzo, final e incremento con los atributos begin, end y step.

15 Control de flujo con JSTL Core III Funcionalidad similar a StringTokenizer puede ser obtenida en JSTL con c:forTokens :

16 Listar todos los parámetros pasados a una petición Parameter Listing Example Parameter values passed to this page for each parameter:

17 Otras acciones Para codificar URLs se puede utilizar c:url : '>Register Se pueden importar otros JSPs o incluso otros recursos en una URL arbitraria usando c:import (análogo to jsp:include ) Para manejar redireccionamiento se puede utilizar la etiqueta c:redirect

18 La librería de etiquetas de internacionalización I Cubre dos áreas: Etiquetas (acciones) de formateo Acciones de internacionalización Acciones de formateo: Inspiradas en el funcionamiento de las clases DateFormat y NumberFormat Para formatear un número usamos formatNumber con los atributos number para el número y pattern para el patrón de formateo a aplicar. Si queremos parsear un número a partir de un string usamos parseNumber : Para formatear una fecha usamos formatDate y para parsear un string parseDate :

19 La librería de etiquetas de internacionalización II Acciones de internacionalización: Una pieza imporante de la localización en Java es la clase ResourceBundle. Las acciones JSTL que permiten trabajar con esta clase son: fmt:bundle para obtener un ResourceBundle correspondiente al Locale actual y fmt:message para hacer lookups en el ResourceBundle Ejemplo:

20 La librería de etiquetas SQL I JSTL permite una fácil integración con bases de datos No gestiona bien connection pooling, por tanto son solamente adecuadas para llevar a cabo prototipos o aplicaciones de bajo volumen. Ejemplo: seleccionar y visualizar un conjunto de elementos SELECT * FROM items WHERE order_id = ORDER BY price

21 La librería de etiquetas SQL II También se soportan acciones para manejar transacciones ( sql:transaction ), sql:update soporta no sólo updates sino que también insert y delete e incluso create, es decir todas las acciones SQL que no devuelven un resultado: UPDATE account SET account_balance =account_balance -? WHERE accountNo = ? UPDATE account SET account_balance =account_balance +? WHERE accountNo = ?

22 La librería de etiquetas XML I El soporte de XML que lleva a cabo JSTL conforma con la especificación XPath. Xpath provee una sintáxis clara para acceder a partes jerárquicas de un documento. Acciones c:import es utilizada para importar un documento, mientras x:parse para genera un árbol DOM a partir de él. x:set crea una variable a partir de un extracto de XML

23 La librería de etiquetas XML II JSTL se integra fenomenálmente con XSTL Artist Album Year Genre

24 La librería de etiquetas XML III --> Jonny B Feedback and Distortion 2001 Rock Harmony's Nieces Sappy Pop Ballads 2002 Pop

25 La librería de etiquetas XML IV Una manera más sencilla de realizar una transformación XSLT sería:

26 Recursos Javadoc de JSTL APIs es disponible en: http://www.jcp.org/aboutJava/community process/final/jsr052/

27 Conclusiones A codificar ahora que lo sabes todo sobre JSTL Tarea: transformar la aplicación de JSPs que realizasteis usando JSTL