jstlAan de slag met jstl


Opmerkingen

JSTL (JSP Standard Tag Library) is een op JSP gebaseerde standaard tagbibliotheek die <c:xxx> -tags biedt om de stroom op de JSP-pagina te beheren , <fmt:xxx> -tags voor datum- / nummeropmaak en internationaliseringsfaciliteiten en verschillende ${fn:xxx()} EL-hulpprogramma's .

Merk op dat JSTL ook SQL- en XML- taglibs biedt die een declaratieve manier mogelijk maken om SQL-query's uit te voeren en XML te parseren binnen een JSP-pagina. Dit wordt echter afgeraden voor andere doeleinden dan snelle prototyping . In de echte wereld moeten beide taken worden uitgevoerd door echte Java-klassen die (in) direct worden bestuurd / gedelegeerd door een Servlet .

Installatie

JSTL is onderdeel van de Java EE API en opgenomen in Java EE-toepassingsservers zoals WildFly , TomEE , GlassFish , maar niet in barebones servletcontainers zoals Tomcat en Jetty . JSTL zijn de taglibs die u importeert vanuit de naamruimte http://java.sun.com/jsp/jstl/* . JSTL mag niet worden verward met een " aangepaste JSP tag library " (waarin je een definiëren .tld zelf-bestand). JSTL moet ook niet worden verward met taglibs van externe frameworks zoals JSF, Spring MVC, Struts, Displaytag, enzovoort. JSTL moet ook niet worden verward met Expression Language (EL) (dat zijn die ${} dingen).

  1. Alleen wanneer uw servletcontainer niet wordt geleverd met JSTL ingebouwd (bijv. Tomcat en Jetty), zet u de jstl-1.2.jar rechtstreeks in de map webapp /WEB-INF/lib (die wordt gedekt door het standaardpad van de webapp, dus in een beetje slim IDE je hoeft niets anders te doen). Om te beginnen, rommelt niet rond in de Build Path- instelling van het IDE-project. Dit is fout.

    Als je Maven gebruikt, is dit de coördinaat:

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

    Dit is trouwens de JSTL API gebundeld met de JSTL-implementatie van Apache in een enkele JAR-smaak. Hiervoor is standard.jar niet vereist (het is alleen voor JSTL 1.1). Merk op dat er ook een jstl:jstl afhankelijkheid is, maar het is precies hetzelfde bestand, alleen met een verkeerde groeps-ID. Verder is er ook een javax.servlet.jsp.jstl:jstl afhankelijkheid, maar deze is leeg.

  2. Declareer de taglib in JSP-bestand met de juiste TLD URI. U kunt hier de TLD-documentatie vinden die van toepassing is op zowel JSTL 1.1 als JSTL 1.2. Klik op de gewenste taglib om de aangiftevoorbeelden te krijgen. Bijvoorbeeld de JSTL kern taglib

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

    Als u Facelets of JSPX gebruikt in plaats van JSP, moet dit in plaats daarvan worden opgegeven als XML-naamruimte

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

U hoeft er alleen voor te zorgen dat u geen duplicaten van oudere JSTL-versies in het classpath hebt (inclusief JDK / JRE's /lib en server's /lib ) om botsingen te voorkomen. Als u volledige controle op beheerdersniveau hebt over de server, kunt u het JAR-bestand ook in server /lib plaats van webapp /WEB-INF/lib zodat ze worden toegepast op alle geïmplementeerde webapps. Pak het JAR-bestand (en) in ieder geval NIET uit en maak het klassenpad met hun inhoud (de losse TLD-bestanden) niet rommelig en / of verklaar de taglibs in web.xml uw webapp zoals sommige slechte online zelfstudies suggereren.