JSTL – (Java Server Page Standard Tag Library)

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Son un conjunto de etiquetas (tags) standard que encapsulan funcionalidades de uso común para muchas aplicaciones con JSPs.Ventajas de JSTL frente a scriptlet:

  • Debido a que las etiquetas JSTL son XML, se integran uniformemente con las etiquetas HTML y serán fáciles de usar por alguien que conozca html.
  • Las etiquetas JSTL están específicamente preparadas para realizar las tareas que van a tener lugar en la lógica de la presentación.
  • EL es usado extensamente en la librería JSTL.

Desventajas:

  • Agregar mayor sobrecarga al servidor. 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 Java en él.

Cargar JSTL

  1. Dejamos los archivos jstl.jar y standard.jar en la carpeta lib de nuestro proyecto. De esta forma no hará falta añadirlo al Java Build Path.
  2. Incluimos las siguientes etiquetas en la cabecera de nuestro jsp:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

La dirección http no es buscada en internet, sino en los tld (tag library descriptor) que contienen los jar. El texto concreto de esta url carece de importancia, mientras coincida con la url que posee el tld.

<c:out value="${param.nombre}" />

Nota: Para trabajar con jstl y con custom tags no hará falta modificar el web.xml. La etiqueta taglib quedó obsoleta en los servlets 2.4.

getAttribute() vs getParameter()

JSTL – (Java Server Page Standard Tag Library) 1
getParameter() devuelve una cadena de texto:

Usamos request.getParameter() en el Servlet para recuperar la información que nos viene del JSP.

request.getParameter("nombre"); 
setAttribute() envía un objeto:

Usamos request.setAttribute() en el Servlet para enviar la información que hemos procesado.

request.setAttribute("nombreAtributo", valorAtributo); // guarda un objeto en el request. 

Usamos request.getAttribute() o JSTL con el nombre del atributo para recuperar el atributo que hemos enviado desde el Servlet.

<%=request.getAttribute("nombreAtributo") %> // devuelve un objeto${nombreAtributo}
<c:out value="${nombreAtributo}" />"

Ejercicio saludo

El usuario debe introducir su nombre en un cuadro de texto. Dicho nombre será enviado a un Servlet que generará el mensaje «Buenas tardes [nombre]». Dicho mensaje llegará de nuevo al jsp, dónde lo mostraremos

Utilizar scriplet, JSTL y EL para recuperar la información.

Directiva para cargar JSTL:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Notas: El atributo default de la etiqueta <c:out/> contiene la información que se imprimirá en caso de que la variable nos venga nulo.

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.