7.1 c:si, c:paraCada
A todos les gustó el código que utiliza etiquetas en lugar de código Java, por lo que decidieron ampliar el alcance. Pero la programación no se limita a crear objetos y leer sus propiedades. Debe llamar a métodos de objetos, trabajar con la base de datos y otros servicios. ¿Qué hacer?
Solo necesita representar cada declaración de Java como una etiqueta. Fue if
, será <if>
, fue for
, será, <for>
y así sucesivamente. Vale, vale, es broma, no fue así. Bueno, no puede ser que la gente realmente decida hacer eso. ¡Pero no, tal vez!
Los programadores permitieron agregar cualquier etiqueta al código. En principio, no hay nada de qué preocuparse: JSP es un estándar extensible. Pero fueron más allá y lanzaron JSP Standard Tag Library - JSTL. La página con él se ve así:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> JSTL Example</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*5}"/>
<c:if test = "${ salary > 2000}">
<p>My salary is: <c:out value = "${salary}"/><p>
</c:if>
</body>
</html>
Es muy posible que te encuentres con dicho código en tus proyectos futuros, allí daré algunas explicaciones.
7.2 Funciones JSTL
Las funciones JSTL se dividen en 5 categorías:
- Etiquetas principales;
- Etiquetas de formato;
- etiquetas SQL;
- etiquetas XML;
- Funciones de llamada.
No los enumeraré todos, pero enumeraré los más populares. Comencemos con las etiquetas principales:
1 | <c:out> |
Muestra la expresión especificada, equivalente a <%= %> |
2 | <c:set> |
Escribe el resultado de una expresión en una variable. |
3 | <c:remove> |
Elimina una variable |
4 | <c:catch> |
Atrapa excepciones |
5 | <c:if> |
análogo de si |
6 | <c:choose> |
interruptor analógico |
7 | <c:when> |
Se usa junto con elegir |
8 | <c:otherwise> |
Se usa junto con elegir |
9 | <c:import> |
Le permite incluir contenido en el código (equivalente a la directiva de importación) |
10 | <c:forEach> |
para cada bucle |
once | <c:param> |
Le permite establecer opciones para importar |
12 | <c:redirect> |
redirigir |
13 | <c:url> |
Crea una URL con parámetros |
Daré solo un ejemplo y terminaré con eso. En principio, es bastante posible leer dicho código después de cierta habilidad. Pero no recomiendo escribir.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> Each Tag Example&</title>
</head>
<body>
<c:forEach var = "i" begin = "1" end = "5">
Item <c:out value = "${i}"/><p>
</c:forEach>
</body>
</html>
Piénselo, escribimos código Java en forma de etiquetas, de modo que el analizador JSP luego convierta estas etiquetas en código Java. Algo en este mundo ha ido mal.
Por cierto, puede escribir sus propias bibliotecas de etiquetas. Incluso una vez trabajé en un proyecto donde estaban ellos. Impresionante experiencia. Tan pronto como se realizan cambios en la biblioteca, todo el jsp se rompe inmediatamente.
¿Qué deseas? El compilador no realiza un seguimiento de dichos cambios. Solo se pueden encontrar visualmente al ver las páginas HTML generadas. Y si estos son algunos escenarios raros que surgen en situaciones no triviales... ¡Dios bendiga el desarrollo de back-end y la tipificación estática!