Looking for jstl Answers? Try Ask4KnowledgeBase
Looking for jstl Keywords? Try Ask4Keywords

jstlErste Schritte mit jstl


Bemerkungen

JSTL (JSP Standard Tag Library) ist eine JSP-basierte Standard-Tag-Bibliothek, die <c:xxx> -Tags zur Steuerung des Flusses auf der JSP-Seite, <fmt:xxx> -Tags für Datums- / Zahlenformatierungs- und Internationalisierungsfunktionen sowie mehrere ${fn:xxx()} EL-Funktionen .

Beachten Sie, dass JSTL auch SQL- und XML- Taglibs bietet, die eine deklarative Ausführung von SQL-Abfragen und das Analysieren von XML innerhalb einer JSP-Seite ermöglichen. Dies wird jedoch zu anderen Zwecken als zum schnellen Prototyping empfohlen . In der realen Welt müssen beide Aufgaben von echten Java-Klassen ausgeführt werden, die (in) direkt von einem Servlet gesteuert / delegiert werden.

Installation

JSTL ist Teil der Java EE-API und in Java EE-Anwendungsservern wie WildFly , TomEE und GlassFish enthalten , nicht jedoch in Barebones-Servlet-Containern wie Tomcat und Jetty . JSTL sind die Taglibs, die Sie aus dem Namespace http://java.sun.com/jsp/jstl/* importieren. JSTL darf nicht mit einer " benutzerdefinierten JSP-Tag-Bibliothek " (wobei Sie eine .tld Datei selbst definieren) .tld werden. JSTL darf auch nicht mit Taglibs von Drittanbieter-Frameworks wie JSF, Spring MVC, Struts, Displaytag usw. verwechselt werden. JSTL darf auch nicht mit Expression Language (EL) verwechselt werden (dies sind die ${} -Dinge).

  1. Nur wenn Ihr Servletcontainer nicht mit JSTL integriert ist (z. B. Tomcat und Jetty), legen Sie einfach die Datei jstl-1.2.jar direkt im Ordner webapp /WEB-INF/lib (der durch den Klassenpfad der Standard-Webapp abgedeckt wird, also in einem etwas intelligente IDE (Sie brauchen nichts weiter zu tun). Beginnen Sie zunächst nicht mit der Einstellung " Pfad erstellen" des IDE-Projekts. Das ist falsch.

    Falls Sie Maven verwenden, ist dies die Koordinate:

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

    Dies ist übrigens die JSTL-API, die mit der Apache-JSTL-Implementierung in einer einzigen JAR-Variante gebündelt ist. Dies erfordert nicht die standard.jar (nur für JSTL 1.1). Beachten Sie, dass es auch eine jstl:jstl Abhängigkeit gibt, aber es ist genau dieselbe Datei, nur mit einer falschen Gruppen-ID. Außerdem gibt es noch eine javax.servlet.jsp.jstl:jstl Abhängigkeit, die aber leer ist.

  2. Deklarieren Sie die Taglib in der JSP-Datei mit dem richtigen TLD-URI. Sie können finden hier die TLD - Dokumentation , die 1,2 bis sowohl JSTL 1.1 und JSTL gilt. Klicken Sie auf die Taglib von Interesse, um die Deklarationsbeispiele anzuzeigen. Zum Beispiel die JSTL-Core-Taglib

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

    Wenn Sie Facelets oder JSPX anstelle von JSP verwenden, sollte dieser stattdessen als XML-Namespace deklariert werden

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

Sie müssen lediglich sicherstellen, dass im Klassenpfad keine Duplikate älterer JSTL-Versionen vorhanden sind (einschließlich JDK / JRE /lib und Server /lib ), um Kollisionen zu vermeiden. Wenn Sie die vollständige Kontrolle der Server-Ebene auf Admin-Ebene haben, können Sie die JAR-Datei auch in /lib des Servers statt in /WEB-INF/lib von webapp platzieren, damit sie auf alle implementierten Webapps angewendet werden. Extrahieren Sie mindestens NICHT die JAR-Datei (en) und überladen Sie den Klassenpfad mit deren Inhalt (den lockeren TLD-Dateien) und / oder deklarieren Sie die Taglibs in der web.xml Ihrer Webapp, wie einige schlechte Online-Tutorials nahelegen.