Biblioteca de etiquetas JSTL principales en JSP

Introducción a JSTL

Para utilizar JSTL en un proyecto JSP, es neecsario incluir los archivos jstl.jar y standard.jar en el classpath.

Etiquetas principales de JSTL Core

A continuación se presentan las etiquetas más importantes del núcleo de JSTL, con ejemplos prácticos en español.

<c:out> – Salida de contenido

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><meta charset="UTF-8"><title>Ejemplo c:out</title></head>
<body>
<%
    pageContext.setAttribute("persona", "Ana García");
%>
<h2><c:out value="${persona}"></c:out></h2>
<h2><c:out value="${persona2}" default="desconocido"></c:out></h2>
</body>
</html>

<c:set> – Asignar valores a atributos

<body>
<c:set var="usuario" value="Ana" scope="request"></c:set>
<h2><c:out value="${usuario}"></c:out></h2>

<jsp:useBean id="personaBean" class="com.ejemplo.modelo.Persona" scope="page"></jsp:useBean>
<c:set property="id" target="${personaBean}" value="001"></c:set>
<c:set property="nombre" target="${personaBean}" value="Ana García"></c:set>
<c:set property="edad" target="${personaBean}" value="25"></c:set>
<h2>ID: ${personaBean.id}</h2>
<h2>Nombre: ${personaBean.nombre}</h2>
<h2>Edad: ${personaBean.edad}</h2>
</body>

<c:remove> – Eliminar atributos de alcance

<body>
<c:set var="usuario" value="Ana" scope="request"></c:set>
<h2><c:out value="${usuario}" default="sin valor"></c:out></h2>
<c:remove var="usuario" scope="request"/>
<h2><c:out value="${usuario}" default="sin valor"></c:out></h2>
</body>

<c:catch> – Captura de excepciones

<body>
<c:catch var="error">
    <%
        int resultado = 1 / 0;
    %>
</c:catch>
<h2>Mensaje de error: ${error}</h2>
</body>

<c:if> – Condicional simple

<body>
<jsp:useBean id="personaBean" class="com.ejemplo.modelo.Persona" scope="page"></jsp:useBean>
<c:set property="id" target="${personaBean}" value="001"></c:set>
<c:set property="nombre" target="${personaBean}" value="Ana García"></c:set>
<c:set property="edad" target="${personaBean}" value="25"></c:set>

<c:if test="${personaBean.nombre == 'Ana García'}" var="esAna" scope="page">
    <h2>Es Ana García</h2>
</c:if>
<c:if test="${personaBean.edad < 18}">
    <h2>Es menor de edad</h2>
</c:if>
</body>

<c:choose>, <c:when>, <c:otherwise> – Condicional múltiple

<body>
<jsp:useBean id="personaBean" class="com.ejemplo.modelo.Persona" scope="page"></jsp:useBean>
<c:set property="id" target="${personaBean}" value="001"></c:set>
<c:set property="nombre" target="${personaBean}" value="Ana García"></c:set>
<c:set property="edad" target="${personaBean}" value="25"></c:set>

<c:choose>
    <c:when test="${personaBean.edad < 18}">
        <h2>Menor de 18</h2>
    </c:when>
    <c:when test="${personaBean.edad == 18}">
        <h2>Exactamente 18</h2>
    </c:when>
    <c:otherwise>
        <h2>Mayor de 18</h2>
    </c:otherwise>
</c:choose>
</body>

<c:forEach> – Iteración sobre colecciones

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="com.ejemplo.modelo.Persona, java.util.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><meta charset="UTF-8"><title>Iteración con c:forEach</title></head>
<body>
<%
    String[] mascotas = {"Luna", "Max", "Bella", "Rocky"};
    pageContext.setAttribute("mascotas", mascotas);
%>
<c:forEach var="m" items="${mascotas}">
    ${m}
</c:forEach>
<hr/>
<c:forEach var="m" items="${mascotas}" step="2">
    ${m}
</c:forEach>
<hr/>
<c:forEach var="m" items="${mascotas}" begin="1" end="2">
    ${m}
</c:forEach>
<hr/>
<%
    List<Persona> listaPersonas = new ArrayList<>();
    listaPersonas.add(new Persona(1, "Carlos López", 30));
    listaPersonas.add(new Persona(2, "María Pérez", 22));
    listaPersonas.add(new Persona(3, "José Martínez", 45));
    pageContext.setAttribute("listaPersonas", listaPersonas);
%>
<table border="1">
    <tr><th>ID</th><th>Nombre</th><th>Edad</th></tr>
    <c:forEach var="p" items="${listaPersonas}">
        <tr>
            <td>${p.id}</td>
            <td>${p.nombre}</td>
            <td>${p.edad}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

<c:forTokens> – Separación de cadenas

<body>
<%
    String url = "www.ejemplo.com";
    String nombres = "Carlos, María, José";
    pageContext.setAttribute("url", url);
    pageContext.setAttribute("nombres", nombres);
%>
<c:forTokens items="${url}" delims="." var="parte">
    ${parte}
</c:forTokens>
<hr/>
<c:forTokens items="${nombres}" delims="," var="nombre">
    ${nombre}
</c:forTokens>
</body>

<c:import> – Inclusión de páginas

<body>
<c:import url="pagina_ejemplo.jsp"></c:import>
<c:import url="otra_pagina.jsp"></c:import>
</body>

<c:url> – Construcción de URLs

<body>
<c:url value="http://www.ejemplo.com" var="urlCompleta">
    <c:param name="usuario" value="carlos"></c:param>
    <c:param name="edad" value="30"></c:param>
</c:url>
<a href="${urlCompleta}">Ir a ejemplo</a>
</body>

<c:redirect> – Redirección en el cliente

<body>
<c:redirect url="destino.jsp">
    <c:param name="usuario" value="carlos"></c:param>
    <c:param name="edad" value="30"></c:param>
</c:redirect>
</body>

<!-- destino.jsp -->
<body>
<h2>Usuario: ${param.usuario}</h2>
<h2>Edad: ${param.edad}</h2>
</body>

Etiquetas: jstl core-tag-library jsp servlet etiquetas

Publicado el 7-6 07:31