Jakarta Standard Tag Library
# Jakarta Standard Tag Library

Die Jakarta Standard Tag Library (JSTL; früher JavaServer Pages Standard Tag Library) 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.

## 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

## 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.

## 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):

Erläuterungen zum JSP-Code:

Im Element jsp:root 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} ein 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).

## 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.

