JavaServer Pages Standard Tag Library
Die JavaServer Pages Standard Tag Library (Abk.: JSTL) ist eine Sammlung von vier Custom-Tag-Bibliotheken, die für die Erstellung von JSP-Seiten hilfreich sind.
Die JSTL wird im Rahmen des Java Community Process (JCP) unter JSR 052 verwaltet. Innerhalb des Jakarta-Projektes gibt es zu dieser Spezifikation Referenzimplementierungen.
Inhaltsverzeichnis |
[Bearbeiten] Bestandteile
In der Version 1.1 sind folgende Bibliotheken vorgesehen:
- core: iterative, konditionale, URL-spezifische und allgemeine Tags
- xml: Tags aus dem Bereich XML und XML-Transformation
- sql: Tags zur direkten Datenbankverarbeitung
- i18n: Tags zur Formatierung und Internationalisierung
[Bearbeiten] Geschichte
In der ursprünglichen Version 1.0 war gegenüber der Version 1.1 eine Expression Language vorgesehen. Mit JSP 2.0 wurde die JSP-EL in die JSP-Spezifikation selbst aufgenommen. Das primäre Ziel der JSTL 1.1 ist dementsprechend die Anpassung der Bibliothek auf die JSP-EL für JSP 2.0. Mit der Version 1.2 der Bibliothek wird die JSTL auf den aktuellen Stand bezüglich der Vereinheitlichung der Expression Language durch die JSP 2.1 und JSF-1.2-Spezifikationen gebracht. Des Weiteren ist die JSTL mit Version 1.2 Teil der Java-EE-5-Plattform.
[Bearbeiten] Verwendung der JSTL 1.1
Da für die JSTL 1.1 die JSP-EL vorausgesetzt wird, muss ein Servlet-Container mindestens der JSP-2.0-Spezifikation genügen, damit sie auf diesem verwendet werden kann. Die Referenzimplementierung gliedert sich in zwei JAR-Archive standard.jar und jstl.jar, die bei den meisten Containern üblicherweise nur im lib-Pfad der Webanwendung zu finden sein müssen. Zur Erhaltung der Rückwärtskompatibilität wird die JSTL 1.1 durch den URI „http://java.sun.com/jsp/jstl/fmt“ referenziert, während man bei JSTL 1.0 „http://java.sun.com/jstl/fmt“ verwendete.
Beispiel JSP-Seite in XML-Schreibweise (JSPX):
<?xml version="1.0" encoding="utf-8" ?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fmt="http://java.sun.com/jsp/jstl/fmt" version="2.0"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> <head> <title>JSTL 1.1</title> </head> <body> <h1>Iteration</h1> <ul> <c:forEach var="num" begin="1" end="10"> <li>Nummer <c:out value="${num}"/></li> </c:forEach> </ul> <h1>Formatierung</h1> <p> Währung: <fmt:formatNumber value="10000" type="currency" currencyCode="EUR" /> </p> </body> </html> </jsp:root>
Erläuterungen zum JSP-Code:
Im jsp:root-Element wird die Verwendung der Basis- und der I18N-Taglibs (core und fmt) aus der JSTL angezeigt und diese an entsprechende XML-Namensräume gebunden. Unter der Überschrift Iteration wird das forEach-Tag aus der core-Bibliothek verwendet: Der Tag-Body (das heißt, der Inhalt des Tags) wird hier zehnmal ausgegeben. In dieser Schleife findet sich mit ${num} eine JSP-Expression: Hier wird mit jedem Schleifendurchlauf der aktuelle Wert von ‚num‘ ausgegeben. Unter der Überschrift Formatierung wird das formatNumber-Tag aus der fmt-Bibliothek der JSTL verwendet. Je nach eingestellter Sprache (diese lässt sich zum Beispiel per fmt:setLocale setzen) wird die Zahl 10000 hier anders formatiert (kann zum Beispiel auf Deutsch als „EUR 10.000,00“ und auf Englisch als „EUR 10,000.00“ ausgegeben werden).
[Bearbeiten] Die JSTL und Struts
Im Gegensatz zum Struts-Framework ist die JSTL nicht an ein bestimmtes Architektur-Paradigma wie z. B. MVC gebunden. Beide Tag-Bibliotheken besitzen gleichnamige Tags. Daher muss bei gemischter Verwendung der eindeutige Präfix (JSP) bzw. der Namensraum (JSPX) beachtet werden.