La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 JSP Standard Tag Library (JSTL). 2 JSTL Objetivo: Objetivo: Simplificar y agilizar el desarrollo de aplicaciones web Simplificar y agilizar el desarrollo.

Presentaciones similares


Presentación del tema: "1 JSP Standard Tag Library (JSTL). 2 JSTL Objetivo: Objetivo: Simplificar y agilizar el desarrollo de aplicaciones web Simplificar y agilizar el desarrollo."— Transcripción de la presentación:

1 1 JSP Standard Tag Library (JSTL)

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

3 3 Instalar JSTL Asumimos que ya has instalado Tomcat 5 en tu máquina, si no consíguelo de: Asumimos que ya has instalado Tomcat 5 en tu máquina, si no consíguelo de: 5/v5.5.7/bin/jakarta-tomcat zip 5/v5.5.7/bin/jakarta-tomcat zip 5/v5.5.7/bin/jakarta-tomcat zip 5/v5.5.7/bin/jakarta-tomcat zip Bajar JSTL 1.1 de: Bajar JSTL 1.1 de: taglibs zip taglibs zip taglibs zip taglibs zip Copiar archivos standard.jar y jstl.jar a %TOMCAT_HOME%\common\lib Copiar archivos standard.jar y jstl.jar a %TOMCAT_HOME%\common\lib

4 4 JSTL 1.0 vs JSTL 1.1 JSTL 1.1 es una pequeña mejora de JSTL 1.0 creada para alinear JSTL con JSP 2.0. JSTL 1.1 es una pequeña mejora de JSTL 1.0 creada para alinear JSTL con JSP 2.0. Antes había una versión de cada librería dependiendo de si utilizabamos expresiones EL o Java, ahora es la misma librería. Antes había una versión de cada librería dependiendo de si utilizabamos expresiones EL o Java, ahora es la misma librería. Ha cambiado el nombre de los identificadores de las librerías, se ha añadido un elemento del path /jsp a todos ellos Ha cambiado el nombre de los identificadores de las librerías, se ha añadido un elemento del path /jsp a todos ellos

5 5 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. 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 Edita el web.xml de tu aplicación web añadiendo las siguientes entradas /WEB-INF/fmt.tld /WEB-INF/c.tld /WEB-INF/sql.tld /WEB-INF/x.tld /WEB-INF/fmt.tld /WEB-INF/c.tld /WEB-INF/sql.tld /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. 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.

6 6 Características Las páginas JSTL son también páginas JSP. JSTL es un superconjunto de JSP. Las páginas JSTL son también páginas JSP. JSTL es un superconjunto de JSP. JSTL provee un conjunto de cinco librerías estándar: JSTL provee un conjunto de cinco librerías estándar: Core Core Internationalization/format Internationalization/format XML XML SQL y SQL y Funciones Funciones Además JSTL define un nuevo lenguaje de expresiones llamado EL, que ha sido luego adoptado por JSP 2.0 Además JSTL define un nuevo lenguaje de expresiones llamado EL, que ha sido luego adoptado por JSP 2.0 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. 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.

7 7 Soporte para EL I El lenguaje de expresiones EL simplemente define un poderoso mecanismo para expresar expresiones simples en una sintáxis muy sencilla. 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. 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. 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 ${ }. En EL las expresiones están delimitadas por ${ }.

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

9 9 JSTL Tag Libraries LibreríaURI Prefijo Librería Corehttp://java.sun.com/jsp/jstl/corec Internationalization I18N formateo SQL/DB support Procesamiento XML Functionshttp://java.sun.com/jsp/jstl/functionsfn

10 10 Uso de las librerías JSTL en un JSP La siguiente directiva ha de incluirse al comienzo de la página: 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: Para utilizar una etiqueta de una librería simplemente se ha de preceder con el prefijo de la librería utilizada:

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

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

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

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

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

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

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

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

19 19 La Nueva Librería de Funciones de EL Cuando EL se migró de la especificación JSTL a JSP, se le añadío una nueva funcionalidad: la invocación a funciones. Cuando EL se migró de la especificación JSTL a JSP, se le añadío una nueva funcionalidad: la invocación a funciones. Su uso es trivial: nombre-func(lista-params) Su uso es trivial: nombre-func(lista-params) ${fn:length(myCollection)} Contiene un grupo de funciones utilizadas comúnmente Contiene un grupo de funciones utilizadas comúnmente

20 20 Funciones en EL Funci ó n Descripci ó n fn:contains(string, substring) Devuelve true si el string contiene substring. fn:containsIgnoreCase (string, substring) Devuelve true si el string contiene a substring, ignorando capitalizaci ó n. fn:endsWith(string, suffix) Devuelve true si el string termina con suffix. fn:escapeXml(string) Devuelve el string con todos aquellos caracteres con especial significado en XML y HTML convertidos a sus c ó digos de escape pertinentes. fn:indexOf(string, substring) Devuelve la primera ocurrencia de substring en el string. fn:join(array, separator) Devuelve un string compuesto por los elementos del array, separados por separator. fn:length(item) Devuelve el n ú mero de elementos en item (si un array o colecci ó n), o el n ú mero de caracteres (es un string).

21 21 Funciones en EL Función Descripci ó n fn:replace(string, before, after) Devuelve un string donde todas las ocurrencias del string before han sido reemplazadas por el string after. fn:split(string, separator) Devuelve un array donde los elementos son las partes del string separadas por separator. fn:startsWith(string, prefix) Devuelve true si el string comienza por prefix. fn:substring(string, begin, end) Devuelve la parte del string que comienza por el í ndice begin y que acaba en el í ndice end. fn:substringAfter(string, substring) Devuelve la parte del string que sigue a substring. fn:substringBefore(string, substring) Devuelve la parte de string que precede a substring. fn:toLowerCase(string) Devuelve un string con todos los caracteres de la entrada convertidos a min ú sculas. fn:toUpperCase(string) Devuelve un string con todos los caracteres de la entrada convertidos a may ú sculas. fn:trim(string) Devuelve un string sin espacios en sus laterales.

22 22 La librería de etiquetas de internacionalización I Cubre dos áreas: Cubre dos áreas: Etiquetas (acciones) de formateo Etiquetas (acciones) de formateo Acciones de internacionalización Acciones de internacionalización Acciones de formateo: Acciones de formateo: Inspiradas en el funcionamiento de las clases DateFormat y NumberFormat 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. 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 : 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 : Para formatear una fecha usamos formatDate y para parsear un string parseDate :

23 23 La librería de etiquetas de internacionalización II Acciones de internacionalización: Acciones de internacionalización: Una pieza importante de la localización en Java es la clase ResourceBundle. Las acciones JSTL que permiten trabajar con esta clase son: Una pieza importante 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:bundle para obtener un ResourceBundle correspondiente al Locale actual y fmt:message para hacer lookups en el ResourceBundle fmt:message para hacer lookups en el ResourceBundle Ejemplo: Ejemplo:

24 24 La librería de etiquetas SQL I JSTL permite una fácil integración con bases de datos 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. 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 Ejemplo: seleccionar y visualizar un conjunto de elementos SELECT * FROM items WHERE order_id = ORDER BY price SELECT * FROM items WHERE order_id = ORDER BY price

25 25 Creando la BBDD Deusto CREATE DATABASE deusto; GRANT ALTER, SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON deusto.* TO IDENTIFIED BY 'deusto'; GRANT ALTER, SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON deusto.* TO IDENTIFIED BY 'deusto'; use deusto; CREATE TABLE EVENTOS(ID int(11) NOT NULL PRIMARY KEY, NOMBRE VARCHAR(250), LOCALIZACION VARCHAR(250), FECHA bigint(20), DESCRIPCION VARCHAR(250)); INSERT INTO EVENTOS VALUES (0, 'SEMANA ESIDE', 'ESIDE-DEUSTO', 0, 'Charla sobre Python'); INSERT INTO EVENTOS VALUES (1, CURSO J2EE', CESINE', 0, Curso sobre tecnologías Java 2 Enterprise Edition');

26 26 Recuperando Datos de Tabla Eventos select * from eventos select * from eventos


27 27 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: 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 = ? UPDATE account SET account_balance =account_balance -? WHERE accountNo = ? UPDATE account SET account_balance =account_balance +? WHERE accountNo = ?

28 28 Recuperando Datos con JSTL de MySQL 1. Instalar MySQL (http://www.mysql.com) 2. Instalar Connector/J, driver JDBC para MySQL (http://www.mysql.com/products/connector/j/) 3. Mover el driver MySQL a $CATALINA_HOME/common/lib. 4. Asegurarse que en $CATALINA_HOME/common/lib están las librerías de JSTL standard.jar y jstl.jar, si no bajarlas de: 5. Crear una tabla de prueba con el siguiente comando: mysql – uroot < createmysqldbtest.sql

29 29 Recuperando Datos con JSTL de MySQL Contenido de createmysqldbtest.sql : Contenido de createmysqldbtest.sql : GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'javadude' WITH GRANT OPTION; create database javatest; use javatest; create table testdata ( id int not null auto_increment primary key, foo varchar(25), bar int ); insert into testdata values(null, 'hello', 12345);

30 30 Recuperando Datos con JSTL de MySQL 5. Añadir el siguiente párrafo a $CATALINA_HOME/conf/server.xml: debug="5" reloadable="true" crossContext="true"> url="jdbc:mysql://localhost:3306/javatest?autoReconne ct=true"/>

31 31 Recuperando Datos con JSTL de MySQL 6. Crear un fichero de configuración para esta aplicación WEB-INF/web.xml : version="2.4"> MySQL Test App MySQL Test App DB Connection DB Connection jdbc/TestDB jdbc/TestDB javax.sql.DataSource javax.sql.DataSource Container Container

32 32 Recuperando Datos con JSTL de MySQL 7. Crear un fichero test.jsp : select id, foo, bar from testdata DB Test DB Test Results Results Foo ${row.foo} Foo ${row.foo} Bar ${row.bar} Bar ${row.bar}

33 33 JSTL y Access Ejecutar ejemplo contenido en standard-examples.war de JSTL: examples/sql/ Ejecutar ejemplo contenido en standard-examples.war de JSTL: examples/sql/ Crear base de datos en Access vacía como la contenida en: sql/jstlsql.mdb Crear base de datos en Access vacía como la contenida en: sql/jstlsql.mdb Registrar fuente de datos ODBC: Panel de Control Herramientas Administrativas Fuentes de Datos (ODBC) JSTLSQLDB (nombre fuente de datos), seleccionar el fichero arriba mencionado Registrar fuente de datos ODBC: Panel de Control Herramientas Administrativas Fuentes de Datos (ODBC) JSTLSQLDB (nombre fuente de datos), seleccionar el fichero arriba mencionado Configurar los detalles de la base de datos con los siguientes parámetros: Configurar los detalles de la base de datos con los siguientes parámetros: Driver sun.jdbc.odbc.JdbcOdbcDriver Driver sun.jdbc.odbc.JdbcOdbcDriver Base de datos jdbc:odbc:JSTLSQLDB Base de datos jdbc:odbc:JSTLSQLDB Ejecutar los.JSPs Ejecutar los.JSPs

34 34 La librería de etiquetas XML I El soporte de XML que lleva a cabo JSTL conforma con la especificación XPath. 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. 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 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

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

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

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

38 38 Ejemplos Copiar standard-examples.war contenido en la distribución estándar de JSTL 1.1 a %TOMCAT_HOME%\webapps\ Copiar standard-examples.war contenido en la distribución estándar de JSTL 1.1 a %TOMCAT_HOME%\webapps\ Ejecutar en el navegador: examples/ Ejecutar en el navegador: examples/ examples/ examples/

39 39 Recursos Javadoc de JSTL APIs es disponible en: Javadoc de JSTL APIs es disponible en: s/final/jsr052/ s/final/jsr052/


Descargar ppt "1 JSP Standard Tag Library (JSTL). 2 JSTL Objetivo: Objetivo: Simplificar y agilizar el desarrollo de aplicaciones web Simplificar y agilizar el desarrollo."

Presentaciones similares


Anuncios Google