Tag - Bibliotheken erlauben, dass neben den vordefinierten JSP - Aktionen, benutzerdefinierte Aktionen (Custom-Tags) definiert werden können.
Beispiele für Tag-Bibliotheken:
Im Java Community Prozess wurde die JavaServer Pages Standard Tag Library JSTL erstellt, die standardiesierte Custom-Tags in verschiedenen Bibliotheken enthält. Weiterhin exestieren noch die Jakarta Taglibs von der Apache Foundation, die neben der JSTL-Referenzimplementierung noch weitere Bibliotheken enthält.
Weitere Tag-Bibliotheken sind im Internet zu finden.
Dieser Abschnitt beschreibt die Verwendung eines eigenen Tags innerhalb einer JSP. Zur Verwendung kommt Tomcat als Servlet-Container. Es wird davon ausgegangen, dass ein Browser auf dem Rechner verwendet wird, auf dem der Tomcat-Server läft.
Die Erstellung des "Hello World - Tag" umfasst folgende Schritte:
Für das "Hello World - Tag" Beispiel wird folgende Projektstruktur im Tomcat benötigt, die mit einem Dateimanager erzeugt werden kann:
<tomcat>
...
+webapps
...
+tagexample
+WEB-INF
+classes
...
...
Der Tag-Handler ist eine Java-Klasse, welche die Funktionalität
des zu erstellenden Tags definiert. Damit die Klasse als Tag-Handler
verwendet werden kann, muss diese ein geeignetes Interface aus dem Package
javax.servlet.jsp.tagext
implementieren. Die Klasse javax.servlet.jsp.tagext.TagSupport
implementiert das Interface javax.servlet.jsp.tagext.Tag,
welches für ein erstes eigenes Tag hier verwendet werden soll.
Die Klasse TagSupport ist im Jar-File javaee.jar,
die mit dem J2EE 5 SDK ausgeliefert wird, definiert und muss beim complilieren
im Classpath gefunden werden.
package de.timpt;
import java.io.*;
import javax.servlet.jsp.tagext.*;
public class HelloTag extends TagSupport{
public int doStartTag() {
try {
pageContext.getÖut().print("Hello! I'm your Hello-Tag");
}
catch(IÖException ioe) {
ioe.printStackTrace();
}
return SKIP_BÖDY;
}
}
Der kompilierte Klasse des Tag-Handlers muss nun in das
<tomcat>\tagexample\WEB-INF\classes unter Beibehaltung der
Packetstruktur kopiert werden. Die Datei sollte demnach Pfad sufweisen:
<tomcat>/webapps/tagexample/WEB-INF/classes/de/timpt/HelloTag.class
Die Hauptaufgabe des Tag Library Descriptor (kurz: TLD) ist es zu definieren, welcher Tag Hanlder für welches Tag verwendet werden soll. Eine TLD ist eine XML-Datei, die normalerweise mit der Endung ".tld" endet.
Für das Hello world - Tag wird folgende TLD verwendet.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
vtlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<tag>
<name>hello</name>
<tag-class>de.timpt.HelloTag</tag-class>
</tag>
</taglib>
Der Dateiname inklusive Pfad ist:
<tomcat>/webapps/tagexample/mytirsttag.tld
Die nachfolgende JSP verwendet das oben erstellte Tag. In der ersten Zeile
wird mit Hilfe der taglib-Direktive der Tag Library Descriptor
festgelegt, welcher beim Prefix hellotag zur Bestimmung des
Tag-Handlers herangezogen werden soll. In der Zeile 04 wird
schliesslich der neu erstellte Tag verwendet.
<%@taglib uri="myfirsttag.tld" prefix="hellotag" %>
<html>
<body>
Hier kommt der HelloTag: <hellotag:hello/>
</body>
</html>
Der Dateiname inklusive Pfad ist:
<tomcat>/webapps/tagexample/index.jsp
Wird die XML-Form für die JSP verwendet gibt es keine taglib-Direktive.
Die zu verwendendes TagLibraries werden im <jsp:root>-Element
definiert.
Nach dem Start von Tomcat und der Eingabe der Addresse
http://localhost:8080/tagexample
ist der erstellte Tag innerhalb der JSP in Aktion zu sehen.

Sun: Homepage JSTL

JavaServer Pages Standard Tag Library JSTL
Apache: Homepage Jakarta Taglibs

Jakarta Taglibs