Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La librería JSTL es un componente dentro de la especificación del Java 2 Enterprise Edition (J2EE) y
es controlada por Sun MicroSystems. JSTL no es más que un conjunto de librerías de etiquetas
simples y estándares que encapsulan la funcionalidad principal que es usada comúnmente para
escribir páginas JSP. Las etiquetas JSTL están organizadas en 4 librerías:
Core (c.tld): Estos Tags como su nombre lo implica ("Core") conforman las
funcionalidades básicas de JSTL, entre las que se encuentran: ciclos, definición de variables,
condicionales y otras funcionalidades.
Formato (fmt.tld): Este tipo de Tags son empleados para dar formato específico a
elementos dentro de JSP's, estos formatos incluyen aquellos para Fechas, Monedas y
Números, así como apoyo para formateo basado en el "Locale/i18n" (Lenguaje) del
usuario.
XML (xml.tld): Estos Tags son empleados para la manipulación de XML dentro de JSP's.
SQL (sql.tld): Tags empleados para interactuar con Bases de Datos dentro de JSP's.
NOTA: Basado en los principios "MVC", el uso de estos Tags en JSP's resulta en una pésima
decisión de diseño, ya que se estaría mezclando el "M"odelo (Base de Datos) con la "V"ista
de presentación (JSP).
Para utilizar Tags JSTL dentro de un JSP ("Java Server Page"), es necesario que estén presentes
los siguientes elementos en la estructura de la aplicación (WAR-"Web-Archive") :
/WEB-INF/lib/jstl.jar: Este JAR contiene las clases empleadas por tags JSTL que
corresponden a javax.servlet.jsp.jstl.*.
/WEB-INF/lib/standard.jar: Este JAR contiene la implementación de tags JSTL, en este
caso de Apache.
Declaración en /WEB-INF/web.xml: También es necesario realizar las declaraciones
correspondientes en el archivo principal de configuración web.xml, estas declaraciones ya
fueron descritas en la configuración de Struts: web.xml con definición de Tags/Librerías .
/WEB-INF/*.tld: Descripción del las librerías JSTL en un archivo tld, aquí se describe el
nombre corto del Tag, la Clase Java y otros parámetros; estos archivos ya se incluyen en la
distribución de JSTL.
Declaración en JSP : Finalmente es necesario importar el Tag JSTL al JSP que hará uso de
éste mediante el "Directive" <%@ taglib %>.
4.2. LA LIBRERÍA CORE.
En las páginas que la usen deberemos incluir la siguiente directiva:
Esta librería implementa acciones de propósito general, como mostrar información, crear y
modificar variables de distinto ámbito y tratar excepciones. Veremos algunas de las etiquetas más
comunes.
4.2.2. out
Ejemplo:
4.2.3. set
Ejemplo:
Ejemplo:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:if test="${empty param.nombre}">
Parámetro ‘nombre’ no definido.
</c:if>
Procesa condiciones múltiples, se procesa el cuerpo del primer when cuya condición especificada
en el atributo test se evalúe a cierto. Si ninguna de las condiciones se cumple, se procesa el cuerpo
de otherwise en caso de que aparezca.
Ejemplo:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:choose>
<c:when test="${empty param.nombre}">
Parámetro ‘nombre’ no definido.
</c:when>
<c:otherwise>
Valor del parámetro ‘nombre’:
${param.nombre}
</c:otherwise>
</c:choose> }
En cada iteración, la variable indicada en var irá tomando el valor del elemento en curso. A través
de la variable indicada en varStatus podemos acceder a las siguientes propiedades:
forTokens permite partir una cadena en fragmentos y recorrer cada uno de éstos, consta de los
siguientes atributos:
4.2.7. redirect
Ejemplo:
<c:if test="${param.clave!=’secreto’}">
<c:redirect url="login.jsp"/>
</c:if>
Con <c:catch> podemos capturar excepciones, sin que se aborte la ejecución de la página al
producirse un error. En el atributo var indicamos el nombre de la variable donde debe guardarse la
información de la excepción, podremos saber que se ha producido un error comprobando que el
valor de esa variable no es nulo.
Ejemplo:
<c:catch var="error01">
<%=Integer.parseInt(request.getParameter("parametro"))%>
</c:catch>
<br/>
<form>
<input type="hidden" name="parametro" value="prueba"/>
<input type="submit" value="Enviar 'prueba'"/>
</form>
<form>
<input type="hidden" name="parametro" value="1234"/>
<input type="submit" value="Enviar '1234'"/>
</form>
<form>
<input type="submit" value="No enviar el parámetro"/>
</form>
4.3. LA LIBRERÍA FORMATTING
Contiene etiquetas que realizan diversas funciones relacionadas con formato y localización,
comentaremos únicamente formatDate y formatNumber. La directiva para poder utilizarla es:
4.3.1. formatDate
Ejemplo
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%
pageContext.setAttribute("fecha",new java.util.Date());
%>
<br>
Hoy es:
<fmt:formatDate value="${pageScope.fecha}"
pattern="dd/MM/yyyy"/>
<br>
Son las:
<fmt:formatDate value="${pageScope.fecha}" pattern="HH:mm:ss"/>
<br>
Es el <fmt:formatDate value="${pageScope.fecha}" pattern="DD"/>º día del año
4.3.2 formatNumber.
Permite dar formato a valores numéricos. Entre otros, tiene los siguientes atributos:
Ejemplo:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<c:set var="numero">123</c:set>
Los JSTL pueden agregar mayor sobrecarga en el servidor. Los scriptlets y las librerías de etiquetas
son compilados a servlets, los cuales luego son ejecutados por el contenedor. El código Java
embebido en los scriptlets es básicamente copiado en el servlet resultante. En cambio, las
etiquetas JSTL, causan un poco más de código en el servlet. En la mayoría de casos esta cantidad
no es mensurable pero debe ser considerado.
Los scriptlets son más potentes que las etiquetas JSTL. Si desea hacer todo en un script JSP pues
es muy probable que insertará todo el código en Java en él. A pesar que las etiquetas JSTL
proporciona un potente conjunto de librerías reutilizables, no puede hacer todo lo que el código
Java puede hacer. La librería JSTL está diseñada para facilitar la codificación en el lado de
presentación que es típicamente encontrado en la capa de Vista si hablamos de la arquitectura
Modelo-Vista-Controlador.