Tema2c-JSTL (1) JPA Se Encarga de Mapear Una Clase
Tema2c-JSTL (1) JPA Se Encarga de Mapear Una Clase
Tema2c-JSTL (1) JPA Se Encarga de Mapear Una Clase
JSTL
Objetivo:
Instalar JSTL
http://apache.rediris.es/jakarta/tomcat-5/v5.
5.7/bin/jakarta-tomcat-5.5.7.zip
http://cvs.apache.org/builds/jakarta-taglibs/
nightly/jakarta-taglibs-20050216.zip
http://jakarta.apache.org/taglibs/
Para cualquier aplicacin web desde la cual quieres usar JSTL, copiar los ficheros
.tld al directorio WEB-INF de tu aplicacin web.
Edita el web.xml de tu aplicacin web aadiendo las siguientes entradas
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://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 libreras de etiquetas JSTL que
usan el lenguaje de expresiones. La posicin de estas entradas tiene importancia.
Caractersticas
Core
Internationalization/format
XML
SQL y
Funciones
Soporte para EL I
El lenguaje de expresiones EL
simplemente define un poderoso
mecanismo para expresar expresiones
simples en una sintxis muy sencilla.
Soporte para EL II
${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]}
URI
Prefijo
Librera
Core
http://java.sun.com/jsp/jstl/core
Internationalizati http://java.sun.com/jsp/jstl/fmt
on I18N
formateo
fmt
SQL/DB support
http://java.sun.com/jsp/jstl/sql
sql
Procesamiento
XML
http://java.sun.com/jsp/jstl/xml
Functions
http://java.sun.com/jsp/jstl/functions
fn
La librera de etiquetas
Core
Visualizar/asignar valores y
manejar excepciones con
Core I
<c:set var="cellContents">
<td>
<c:out value="${myCell}"/>
</td>
</c:set>
Visualizar/asignar valores y
manejar excepciones con
Core II
<table>
<c:forEach var="name" items="${customerNames}">
<tr><td><c:out value="${name}"/></td></tr>
</c:forEach>
</table>
<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>
Otras acciones
Para codificar URLs 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 JSPs o incluso otros
recursos en una URL arbitraria usando
c:import (anlogo to jsp:include)
Para manejar redireccionamiento se puede
utilizar la etiqueta c:redirect
La Nueva Librera de
Funciones de EL
Funciones en EL
Funcin
Descripcin
fn:contains(string,
substring)
fn:containsIgnoreCase
(string, substring)
fn:endsWith(string,
suffix)
fn:escapeXml(string)
Devuelve el string con todos aquellos caracteres con especial significado en XML
y HTML convertidos a sus cdigos de escape pertinentes.
fn:indexOf(string,
substring)
fn:join(array,
separator)
Devuelve un string compuesto por los elementos del array, separados por
separator.
fn:length(item)
Funciones en EL
Funcin
Descripcin
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)
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)
fn:substringBefore(string,
substring)
fn:toLowerCase(string)
fn:toUpperCase(string)
fn:trim(string)
La librera de etiquetas de
internacionalizacin I
Acciones de formateo:
Inspiradas en el funcionamiento de las clases DateFormat y
NumberFormat
La librera de etiquetas de
internacionalizacin II
Acciones de internacionalizacin:
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 librera de etiquetas
SQL I
Recuperando 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.NOMBRE}"/></td>
<td><c:out value="${row.LOCALIZACION}"/></td>
<td><c:out value="${row.FECHA}"/></td>
<td><c:out value="${row.DESCRIPCION}"/></td>
</tr>
</c:forEach>
</table>
La librera de etiquetas
SQL II
<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>
3.
4.
5.
Contenido de createmysqldbtest.sql:
url="jdbc:mysql://localhost:3306/javatest?
autoReconnect=true"/>
</Context>
JSTL y Access
Driver sun.jdbc.odbc.JdbcOdbcDriver
Base de datos jdbc:odbc:JSTLSQLDB
La librera de etiquetas
XML I
<!-- 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 librera de etiquetas
XML II
La librera de etiquetas
XML III
<!---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>
<artist>Jonny B</artist>
<album>Feedback and Distortion</album>
<year>2001</year>
<genre>Rock</genre>
</artists>
<artists>
<artist>Harmony's Nieces</artist>
<album>Sappy Pop Ballads</album>
<year>2002</year>
<genre>Pop</genre>
</artists>
</music>
</x:transform>
La librera de etiquetas
XML IV
Ejemplos
Copiar standard-examples.war
contenido en la distribucin
estndar de JSTL 1.1 a
%TOMCAT_HOME%\webapps\
Ejecutar en el navegador:
http://localhost:8080/standar
d-examples/
Recursos
Javadoc de JSTL APIs es disponible
en:
http://www.jcp.org/aboutJava/commun
ityprocess/final/jsr052/