jstlEmpezando con jstl


Observaciones

JSTL (JSP Standard Tag Library) es una biblioteca de etiquetas estándar basada en JSP que ofrece etiquetas <c:xxx> para controlar el flujo en la página JSP, <fmt:xxx> para el formato de fecha / número y facilidades de internacionalización y varias ${fn:xxx()} utilidad EL funciones .

Tenga en cuenta que JSTL también ofrece taglibs SQL y XML que permiten una forma declarativa de ejecutar consultas SQL y analizar XML dentro de una página JSP. Sin embargo, esto no se recomienda para otros fines que no sean la creación rápida de prototipos . En el mundo real, ambas tareas deben ser realizadas por clases reales de Java que están (in) directamente controladas / delegadas por un Servlet .

Instalación

JSTL forma parte de la API de Java EE y se incluye en servidores de aplicaciones Java EE como WildFly , TomEE , GlassFish , pero no en contenedores de barebones como Tomcat y Jetty . JSTL son los taglibs que importa desde http://java.sun.com/jsp/jstl/* espacio de nombres. JSTL no debe confundirse con una " biblioteca de etiquetas JSP personalizadas " (en el que se define una .tld archivo usted mismo). JSTL tampoco debe confundirse con taglibs de frameworks de terceros como JSF, Spring MVC, Struts, Displaytag, etc. JSTL tampoco debe confundirse con Expression Language (EL) (que son esas cosas ${} ).

  1. Solo cuando su servletcontainer no se distribuye con JSTL integrado (por ejemplo, Tomcat y Jetty), simplemente suelte el archivo jstl-1.2.jar directamente en la carpeta /WEB-INF/lib de la aplicación web (que está cubierta por la ruta de clase de la aplicación web predeterminada, por lo que en un IDE poco inteligente no necesita hacer nada más). Para empezar, no juegues con la configuración de la ruta de acceso de compilación del proyecto IDE. Esto está mal.

    En caso de que estés usando Maven, esta es la coordenada:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
     

    Esto se debe a la forma en que la API de JSTL se incluye con la implementación de JSTL de Apache en un solo sabor JAR. Esto no requiere el archivo standard.jar (solo para JSTL 1.1). Tenga en cuenta que también hay una dependencia jstl:jstl , pero es exactamente el mismo archivo, solo que con un ID de grupo incorrecto. Además, también hay una dependencia javax.servlet.jsp.jstl:jstl , pero está vacía.

  2. Declare el taglib en el archivo JSP con el URI TLD correcto. Aquí puede encontrar la documentación de TLD que se aplica tanto a JSTL 1.1 como a JSTL 1.2. Haga clic en el taglib de interés para obtener los ejemplos de declaración. Por ejemplo, el taglib núcleo JSTL

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

    Si está utilizando Facelets o JSPX en lugar de JSP, debería declararse como espacio de nombres XML.

    <anyxmlelement xmlns:c="http://java.sun.com/jsp/jstl/core">
     

Solo debe asegurarse de no tener duplicados de versiones anteriores de JSTL en la ruta de clase (incluye JDK / JRE's /lib y server /lib ) para evitar colisiones. Si tiene un control total a nivel de administrador sobre el servidor, también puede colocar el archivo JAR en el servidor /lib lugar de en el de la aplicación web /WEB-INF/lib para que se apliquen a todas las aplicaciones web implementadas. Al menos NO extraiga los archivos JAR ni sobrecargue el classpath con su contenido (los archivos sueltos de TLD) y / o declare los taglibs en web.xml su aplicación web como sugieren algunos tutoriales en línea deficientes.