0 calificaciones0% encontró este documento útil (0 votos)
21 vistas39 páginas
Este documento describe la biblioteca de etiquetas JSTL (JavaServer Pages Standard Tag Library). JSTL proporciona un conjunto de etiquetas para simplificar el desarrollo de aplicaciones web dinámicas. Incluye cinco bibliotecas principales para funciones básicas, internacionalización, SQL, XML y funciones. Las etiquetas JSTL permiten el control de flujo, la asignación de valores y el formateo internacionalizado entre otras funciones.
Este documento describe la biblioteca de etiquetas JSTL (JavaServer Pages Standard Tag Library). JSTL proporciona un conjunto de etiquetas para simplificar el desarrollo de aplicaciones web dinámicas. Incluye cinco bibliotecas principales para funciones básicas, internacionalización, SQL, XML y funciones. Las etiquetas JSTL permiten el control de flujo, la asignación de valores y el formateo internacionalizado entre otras funciones.
Copyright:
Attribution Non-Commercial (BY-NC)
Formatos disponibles
Descargue como PPT, PDF, TXT o lea en línea desde Scribd
Este documento describe la biblioteca de etiquetas JSTL (JavaServer Pages Standard Tag Library). JSTL proporciona un conjunto de etiquetas para simplificar el desarrollo de aplicaciones web dinámicas. Incluye cinco bibliotecas principales para funciones básicas, internacionalización, SQL, XML y funciones. Las etiquetas JSTL permiten el control de flujo, la asignación de valores y el formateo internacionalizado entre otras funciones.
Copyright:
Attribution Non-Commercial (BY-NC)
Formatos disponibles
Descargue como PPT, PDF, TXT o lea en línea desde Scribd
Dr. Diego Lz. de !pina Cz. de Artaza http://paginaspersonales.deusto.es/dipina http://paginaspersonales.deusto.es/dipina/cursos/]2EECesine.zip dipina@eside.deusto.es ]STL Objetivo: Simplificar y agilizar el desarrollo de aplicaciones web 3ra iteracin despus de servlets y ]SPs Sirven para la generacin dinamica de paginas web !nstalar ]STL Asumimos que ya has instalado Tomcat S en tu maquina, si no consiguelo de: http://apache.rediris.es/jakarta/tomcat S/vS.S.7/bin/jakartatomcatS.S.7.zip Bajar ]STL 1.1 de: http://cvs.apache.org/builds/jakarta taglibs/nightly/jakartataglibs200S0216.zip Copiar archivos standard.jar y jstl.jar a %TJMCAT_HJME%\common\lib http://jakarta.apache.org/taglibs/ ]STL 1.0 vs ]STL 1.1 ]STL 1.1 es una pequena mejora de ]STL 1.0 creada para alinear ]STL con ]SP 2.0. Antes habia una versin de cada libreria dependiendo de si utilizabamos expresiones EL o ]ava, ahora es la misma libreria. Ha cambiado el nombre de los identificadores de las librerias, se ha anadido un elemento del path /jsp a todos ellos sar ]STL en una aplicacin Web Para cualquier aplicacin web desde la cual quieres usar ]STL, copiar los ficheros .tld al directorio WEB-INF de tu aplicacin web. Edita el web.xml de tu aplicacin web anadiendo las siguientes entradas <taglib <taglib-urihttp://java.sun.com/jsp/jstl/fmt</taglib-uri <taglib-location/WEB-INF/fmt.tld</taglib-location </taglib <taglib <taglib-urihttp://java.sun.com/jsp/jstl/core</taglib-uri <taglib-location/WEB-INF/c.tld</taglib-location </taglib <taglib <taglib-urihttp://java.sun.com/jsp/jstl/sql</taglib-uri <taglib-location/WEB-INF/sql.tld</taglib-location </taglib <taglib <taglib-urihttp://java.sun.com/jsp/jstl/x</taglib-uri <taglib-location/WEB-INF/x.tld</taglib-location </taglib Estas entradas permiten a tu aplicacin web usar las librerias de etiquetas ]STL que usan el lenguaje de expresiones. La posicin de estas entradas tiene importancia. Caracteristicas Las paginas ]STL son tambin paginas ]SP. ]STL es un superconjunto de ]SP. ]STL provee un conjunto de cinco librerias estandar: Core !nternationalization/format XNL SQL y Funciones Ademas ]STL define un nuevo lenguaje de expresiones llamado EL, que ha sido luego adoptado por ]SP 2.0 na etiqueta ]STL corresponde a una accin, llamandolas accin nos indica que anaden comportamiento dinamico a una, de otra manera, pagina estatica. Soporte para EL ! El lenguaje de expresiones EL simplemente define un poderoso mecanismo para expresar expresiones simples en una sintaxis muy sencilla. Es algo entre ]avaScript y Perl. Su combinacin con las etiquetas de las 4 librerias antes mencionadas proveen mucha flexibilidad y poder para el desarrollo de paginas dinamicas. En EL las expresiones estan delimitadas por ${ }. Soporte para EL !! Algunos ejemplos del uso de EL son: ${anExpression} ${aList|4]} ${aList|somevariable]} acceso a un elemento de una coleccin ${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 implicitas definidas en EL: pageContext: el contexto del ]SP actual pageScope, requestScope, sessionScope, and applicationScope: colecciones de mapas que mapean nombres de variables en esos contextos a valores param and paramValues: parametros pasados con la peticin de la pagina, lo mismo que en ]SP header and headerValues: cabeceras pasadas en la peticin de la pagina cookie: mapa que mapea nombres de cookies a los valores de las mismas ]STL Tag Libraries Libreria UR! Prefijo Libreria Core http://java.sun.com/jsp/jstl/core c !nternationalization !18N formateo http://java.sun.com/jsp/jstl/fmt fmt SQL/DB support http://java.sun.com/jsp/jstl/sql sql Procesamiento XNL http://java.sun.com/jsp/jstl/xml x Functions http://java.sun.com/jsp/jstl/functions fn so de las librerias ]STL en un ]SP La siguiente directiva ha de incluirse al comienzo de la pagina: <%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core % Para utilizar una etiqueta de una libreria simplemente se ha de preceder con el prefijo de la libreria utilizada: <c:out value="$,anExpression,"/ La libreria de etiquetas Core Permiten llevar a cabo las siguientes acciones: visualizar/asignar valores y manejar excepciones Control de flujo Otras acciones de utilidad visualizar/asignar valores y manejar excepciones con Core ! Para visualizar valores utilizamos: <c:out: value="$,applicationScope.product.inventoryCount," escapeXml="true" default="0" / of those items in stock. escapeXml indica si hay que aplicar cdigos de escape a los caracteres <, >, S y . Asignar una variable en una pagina: <c:set var="customerID" value="$param.customerNumber" scope="session" / scope indica el contexto en el que se define la variable Tambin podemos asignar el contenido de una etiqueta a una variable: <c:set var="cellContents" <td <c:out value="$,myCell,"/ </td </c:set visualizar/asignar valores y manejar excepciones con Core !! Normalmente en un ]SP o incluimos un bloque try/catch o usamos la directiva errorPage: <c:catch <!--. . . some set of nested JSTL tags below which would be hit on an exception-- </c:catch Para borrar una variable se puede utilizar <c:remove Control de flujo con ]STL Core ! Para llevar a cabo simples condiciones (c:if): <c:if test="$,status.totalVisits == 1000000," var="visits" You are the millionth visitor to our site! Congratulations! </c:if El switch de un lenguaje de programacin se puede emular con c:choose: <c:choose <c:when test="$,item.type == 'book'," ... </c:when <c:when test="$,item.type == 'electronics'," ... </c:when <c:when test="$,item.type == 'toy'," ... </c:when <c:otherwise ... </c:otherwise </c:choose Control de flujo con ]STL Core !! Para iterar sobre una coleccin se define c:foreach. Se pueden especificar indice de comienzo, final e incremento con los atributos begin, end y step. <table <c:forEach var="name" items="$,customerNames," <tr<td<c:out value="$,name,"/</td</tr </c:forEach </table Control de flujo con ]STL Core !!! Funcionalidad similar a StringTokenizer puede ser obtenida en ]STL con c:forTokens: <table <c:forTokens items="47,52,53,55,46,22,16,2" delims="," var="dailyPrice" <tr<td<c:out value="$,dailyPrice,"/</td</tr </c:forTokens </table Listar todos los parametros pasados a una peticin <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" % <html <body <head <titleParameter Listing Example</title </head <br <bParameter values passed to this page for each parameter: </b <table border="2" <c:forEach var="current" items="$,param," <tr <td <b<c:out value="$,current.key," /</b </td <c:forEach var="aVal" items="$,paramValuescurrent.key,," <td <c:out value="$,aVal," / </td </c:forEach </tr </c:forEach </table </body </html Otras acciones Para codificar %Ls se puede utilizar c:url: <c:url value="http://acme.com/exec/register" var="myUrl" <c:param name="name" value="$,param.name,"/ <c:param name="country" value="$,param.country,"/ </c:url <a href='<c:out value="$,myUrl,"/'Register</a Se pueden importar otros ]SPs o incluso otros recursos en una %L arbitraria usando c:import (analogo to jsp:include) Para manejar redireccionamiento se puede utilizar la etiqueta c:redirect La Nueva Libreria de Funciones de EL Cuando EL se migr de la especificacin ]STL a ]SP, se le anadio una nueva funcionalidad: la invocacin a funciones. Su uso es trivial: nombre-func(lista- params) <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/fun ctions" % $,fn:length(myCollection), Contiene un grupo de funciones utilizadas comnmente Funciones en EL 50i5 es0rip0i5 fn:contains(string, substring) Devuelve true si el string contiene substring. fn:containsIgnoreCase (string, substring) Devuelve true si el string contiene a substring, ignorando capitalizacin. 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 XNL y HTNL convertidos a sus cdigos de escape pertinentes. fn:indexJf(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 nmero de elementos en item (si un array o coleccin), o el nmero de caracteres (es un string). Funciones en EL :3.O3 es0rip0i5 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 indice begin y que acaba en el indice 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 minsculas. fn:toUpperCase(string) Devuelve un string con todos los caracteres de la entrada convertidos a maysculas. fn:trim(string) Devuelve un string sin espacios en sus laterales. La libreria de etiquetas de internacionalizacin ! Cubre dos areas: Etiquetas (acciones) de formateo Acciones de internacionalizacin Acciones de formateo: !nspiradas en el funcionamiento de las clases DateFormat y NumberFormat Para formatear un nmero usamos formatNumber con los atributos number para el nmero y pattern para el patrn de formateo a aplicar. <fmt:formatNumber value="1000.001" pattern="#,#00.0#"/ Si queremos parsear un nmero a partir de un string usamos parseNumber: <fmt:parseNumber value="$,currencyInput," type="currency" var="parsedNumber"/ Para formatear una fecha usamos formatDate y para parsear un string parseDate: <jsp:useBean id="now" class="java.util.Date" / <fmt:formatDate value="$,now," timeStyle="long" dateStyle="long"/ <fmt:parseDate value="$,dateInput," pattern="MM dd, YYYY" / La libreria de etiquetas de internacionalizacin !! Acciones de internacionalizacin: na pieza importante de la localizacin en ]ava es la clase ResourceBundle. Las acciones ]STL 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: <fmt:bundle basename="myBundle" <%-- Use values in myBundle --% <fmt:message key="Introduction" <fmt:param value="$,loginName,"/ <fmt:param value="$,loginCount,"/ </fmt:message <fmt:formatDate value="$,now," var="parsedDate"/ </fmt:bundle La libreria de etiquetas SQL ! ]STL permite una facil integracin 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 <sql:setDataSource driver="com.cheapDrivers.jdbcDriver" url="jdbc:cheapDrivers:." user="guest" password="password" var="dataSource" / <sql:query var="orderItems" dataSource="$,dataSource," SELECT FRJM items WHERE order_id = <cout value="$,orderID,"/ JRDER BY price </sql:query <table <c:forEach var="row" items="$,orderItems.rows," <tr <td<c:out value="$,row.itemName,"/</td <td<c:out value="$,row.price,"/</td <td<c:out value="$,row.weight,"/</td </tr </c:forEach </table Creando la BBDD Deusto CREATE DATABASE deusto; GRANT ALTER, SELECT,INSERT,UPDATE,DELETE,CREATE,DRJP JN deusto. TJ deusto@'%' IDENTIFIED BY 'deusto'; GRANT ALTER, SELECT,INSERT,UPDATE,DELETE,CREATE,DRJP JN deusto. TJ deusto@localhost IDENTIFIED BY 'deusto'; use deusto; CREATE TABLE EVENTJS(ID int(11) NJT NULL PRIMARY KEY, NJMBRE VARCHAR(250), LJCALIZACIJN VARCHAR(250), FECHA bigint(20), DESCRIPCIJN VARCHAR(250)); INSERT INTJ EVENTJS VALUES (0, 'SEMANA ESIDE', 'ESIDE-DEUSTJ', 0, 'Charla sobre Python'); INSERT INTJ EVENTJS VALUES (1, `CURSJ J2EE', `CESINE', 0, `Curso sobre tecnologas Java 2 Enterprise Edition'); %ecuperando Datos de Tabla Eventos <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" % <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" % <sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/deusto" user="deusto" password="deusto" var="dataSource"/ <sql:query var="eventItems" dataSource="$,dataSource," select from eventos </sql:query <table <c:forEach var="row" items="$,eventItems.rows," <tr <td<c:out value="$,row.ID,"/</td <td<c:out value="$,row.NJMBRE,"/</td <td<c:out value="$,row.LJCALIZACIJN,"/</td <td<c:out value="$,row.FECHA,"/</td <td<c:out value="$,row.DESCRIPCIJN,"/</td </tr </c:forEach </table La libreria de etiquetas SQL !! Tambin se soportan acciones para manejar transacciones (sql:transaction), sql:update soporta no slo updates sino que tambin insert y delete e incluso create, es decir todas las acciones SQL que no devuelven un resultado: <sql:transaction dataSource="$,dataSource," <sql:update UPDATE account SET account_balance =account_balance -. WHERE accountNo = . <sql:param value="$,transferAmount,"/ <sql:param value="$,sourceAccount,"/ </sql:update <sql:update UPDATE account SET account_balance =account_balance +. WHERE accountNo = . <sql:param value="$,transferAmount,"/ <sql:param value="$,destAccount,"/ </sql:update </sql:transaction %ecuperando Datos con ]STL de NySQL 1. !nstalar NySQL (http://www.mysql.com) 2. !nstalar Connector/], driver ]DBC para NySQL (http://www.mysql.com/products/connector/j/) 3. Nover el driver NySQL a $CATAL!NA_HONE/common/lib. 4. Asegurarse que en $CATAL!NA_HONE/common/lib estan las librerias de ]STL standard.jar y jstl.jar, si no bajarlas de: http://apache.rediris.es/jakarta/taglibs/standard/bi naries/ S. Crear una tabla de prueba con el siguiente comando: mysql -uroot < createmysqldbtest.sql %ecuperando Datos con ]STL de NySQL Contenido de createmysqldbtest.sql: GRANT ALL PRIVILEGES JN . TJ javauser@localhost IDENTIFIED BY 'javadude' WITH GRANT JPTIJN; 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); %ecuperando Datos con ]STL de NySQL S. Anadir el siguiente parrafo a $CATAL!NA_HONE/conf/server.xml: <Context path="/DBTest" docBase="DBTest" debug="5" reloadable="true" crossContext="true" <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest.autoRecon nect=true"/ </Context %ecuperando Datos con ]STL de NySQL 6. Crear un fichero de configuracin para esta aplicacin WEB-INF/web.xml: <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" <descriptionMySQL Test App</description <resource-ref <descriptionDB Connection</description <res-ref-namejdbc/TestDB</res-ref-name <res-typejavax.sql.DataSource</res-type <res-authContainer</res-auth </resource-ref </web-app %ecuperando Datos con ]STL de NySQL 7. Crear un fichero test.jsp: <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" % <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" % <sql:query var="rs" dataSource="jdbc/TestDB" select id, foo, bar from testdata </sql:query <html <head <titleDB Test</title </head <body <h2Results</h2 <c:forEach var="row" items="$,rs.rows," Foo $,row.foo,<br/ Bar $,row.bar,<br/ </c:forEach </body </html ]STL y Access Ejecutar ejemplo contenido en standard examples.war de ]STL: http://localhost:8080/standard- examples/sql/ Crear base de datos en Access vacia como la contenida en: sql/jstlsql.mdb %egistrar 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 parametros: Driver sun.jdbc.odbc.JdbcJdbcDriver Base de datos jdbc:odbc:JSTLSQLDB Ejecutar los .]SPs La libreria de etiquetas XNL ! El soporte de XNL que lleva a cabo ]STL conforma con la especificacin XPath. Xpath provee una sintaxis clara para acceder a partes jerarquicas de un documento. Acciones c:import es utilizada para importar un documento, mientras x:parse para genera un arbol DON a partir de l. x:set crea una variable a partir de un extracto de XNL <!-- Find and parse our XML document (somewhere on the WWW) -- <c:import url="http://www.cheapstuff.com/orderStatus.id=2435" var="xml"/ <x:parse xml="$,xml," var="doc"/ <!-- access XML data via XPath expressions -- <x:out select="$doc/name"/ <x:out select="$doc/shippingAddress"/ <x:out select="$doc/deliveryDate"/ <!-- Set a scoped variable -- <x:set var="custName" scope="request" select="$doc/name"/ La libreria de etiquetas XNL !! ]STL se integra fenomenalmente con XSTL <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" % <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" % <c:set var="xsltSource" <.xml version="1.0". <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" <xsl:template match="/" <xsl:apply-templates/ </xsl:template <xsl:template match="music" <html <head</head <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" <table cellpadding="0" cellspacing="0" border="1" bgcolor="#ffffff" <tr <td<STRJNGArtist</STRJNG</td <td<STRJNGAlbum</STRJNG</td <td<STRJNGYear</STRJNG</td <td<STRJNGGenre</STRJNG</td </tr La libreria de etiquetas XNL !!! <!---Set up for loop to collect all the artist information //-- <!-- <xsl:for-each select="./name()='artists'," -- <xsl:for-each select="artists" <tr <td<xsl:value-of select="artist"/</td <td<xsl:value-of select="album"/</td <td<xsl:value-of select="year"/</td <td<xsl:value-of select="genre"/</td </tr </xsl:for-each </table </body </html </xsl:template </xsl:stylesheet </c:set <x:transform xslt="$,xsltSource," <music <artists <artistJonny B</artist <albumFeedback and Distortion</album <year2001</year <genreRock</genre </artists <artists <artistHarmony's Nieces</artist <albumSappy Pop Ballads</album <year2002</year <genrePop</genre </artists </music </x:transform La libreria de etiquetas XNL !v na manera mas sencilla de realizar una transformacin XSLT seria: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"% <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" % <c:import var="xmlSource" url=$,someDocumentURL," / <c:import var="xsltSource" url=$,anotherDocumentURL," / <x:transform xml="$,xmlSource," xslt="$,xsltSource,"/ Ejemplos Copiar standardexamples.war contenido en la distribucin estandar de ]STL 1.1 a %TJMCAT_HJME%\webapps\ Ejecutar en el navegador: http://localhost:8080/standar d-examples/ %ecursos ]avadoc de ]STL AP!s es disponible en: http://www.jcp.org/about]ava/community process/final/jsr0S2/