Tutorial über benutzerdefinierte JSP-Tags

December 4

Benutzerdefinierte Tags in JavaServer Pages (JSP) sind XML-Tags, die Sie zum Ausführen von benutzerdefinierter Aktionen in einer JSP-Seite erstellen. Benutzerdefinierte Tags trennen das Design und Layout einer JSP-Seite von der Java-Code, der die Aktion antreibt. Mithilfe von benutzerdefinierten Tags JSP-Seiten besser lesbar macht, können Sie Code wiederverwenden und macht Ihre Anwendung besser verwaltbar. Webdesigner können Code verwenden, ohne etwas über Java einfach mithilfe der benutzerdefinierten Tags, die Sie in ihrer JSP-Seiten entworfen.

Benutzerdefinierte Tag-Struktur

Benutzerdefinierte Tags folgen XML-Syntaxregeln, nach folgende Grundstruktur:< Präfix: TagName Attribut1 = "Wert1" Attribut2 = "Wert2"... >Körper< / Präfix: TagName >

Das grundlegendste benutzerdefinierte Tag, rief ein einfaches Tag hat keinen Körper und erfordert keine Attribute. Ein benutzerdefiniertes Tag mit einem Leichnam wird einen Body-Tag bezeichnet. Benutzerdefinierte Tags können verschachtelt werden. Attributwerte können mit JSP-Ausdrücke festgelegt werden. Es gibt zwei grundlegende Bestandteile, die Sie erstellen, erstellen Sie ein benutzerdefiniertes Tag: der Tag Library Descriptor-Datei und der Tag-Handler Java-Klasse. Diese Komponenten sind bei der Servlet-Container in der Anwendung web.xml-Datei registriert.

Die Tag Library Descriptor-Datei erstellen

Die Datei Tag Library Descriptor (TLD) ist eine XML-Datei mit Metadaten, die Ihre benutzerdefinierten Tags definieren. Beispielsweise definiert die folgende TLD-Datei ein einfaches Tag mit dem Namen "MyTag" mit einem Attribut, "MaxValue" und kein Körper. Das MaxValue-Attribut ist erforderlich, und der Wert kann festgelegt werden, mit einem Runtime-Ausdruck (festgelegt durch das Rtexprvalue-Element), der wodurch eine ganze Zahl zurückgegeben werden muss.

<? Xml-version=\"1.0\" Codierung = \ "ISO-8859-1"? ><! DOCTYPE Taglib öffentliche \"-//Sun Microsystems, Inc.//DTD JSP-TagBibliothek 1.2 / / EN\ "\" http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd \ & Quot; >< Taglib >< Tlib-Version > 1.0 < / Tlibversion >< Jsp-Version > 2.0 < / Jspversion >< Kurzname > zB < / Shortname >< Uri >< / Uri >< > Beispiel-Tag-Bibliothek < / Beschreibung >

< Tag >

&lt;name>myTag&lt;/name> &lt;tag-class>tags.myTag&lt;/tagclass> &lt;body-content>empty&lt;/bodycontent> &lt;description>Custom tag with an attribute&lt;/description> &lt;attribute> &lt;name>maxValue&lt;/name> &lt;required>true&lt;/required> &lt;rtexprvalue>true&lt;/rtexprvalue> &lt;type>int&lt;/type> &lt;/attribute>

< / tag >< / Taglib >

Den Taghandler erstellen

Jede benutzerdefiniertes Tag ist einen Taghandler, der legt fest und ruft seine Attribute, verarbeitet den Körper und die Aktion implementiert. Ein Taghandler ist eine Javaklasse, die implementiert javax.servlet.jsp.tagext.Tag oder, noch besser, eine Unterklasse von Tag erweitert. Tag-Handler-Klassen haben Zugriff auf dieselben implizite Objekte als JSP-Seiten, z. B. Request, Response und Sitzung.

Erstellen Sie eine einfache Tag-Handler-Klasse durch javax.servlet.jsp.tagext.TagSupport erweitern. Implementieren Sie die DoStartTag, DoEndTag, und lassen Sie Methoden. Die DoStartTag wird ausgeführt, wenn das Start-Tag gefunden wird und die wichtigste Maßnahmen führt der das Tag, solche Berechnungen und Drucken die Ergebnisse.

public void doStartTag() löst JspException {}

try { … your code … } catch (Exception ex) { … error handling … } return SKIP_BODY

GEHEN}

Die DoEndTag-Methode wird ausgeführt, wenn das Endtag aufgetreten ist. EVAL_PAGE zurück, wenn der Rest der JSP-Seite ausgewertet werden. Die Release-Methode sollte Aufräumen und alle von der Tag-Handler-Klasse verwendeten Ressourcen freizugeben.

Wenn Ihre benutzerdefinierte Tag Attribute verfügt, gehören eine Membervariable und implementieren und get-Methoden für jedes Attribut. Wenn das Attribut nicht erforderlich ist, festlegen Sie einen Standardwert. Für die erforderliche MaxValue-Attribut:

private Int maxValueGEHEN

public void SetMaxValue (Int Val) {}

maxValue = val

GEHEN}public void GetMaxValue () {}

return maxValue

GEHEN}

Körper-Tag-Handler, die nicht mit dem Tag Körper Inhalten interagieren erweitern javax.servlet.jsp.tagext.TagSupport. Implementieren Sie die gleichen Methoden wie für ein einfaches Tag. Auch implementieren Sie die DoAfterBody-Methode zum Analysieren und verwenden den Textinhalt. Für Körper-Tag-Handler, die mit dem Tag Körperinhalt interagieren müssen, erweitern Sie javax.servlet.jsp.tagext.BodyTagSupport und die DoInitBody und DoAfterBody Methoden.

Update-web.xml

Nachdem Sie die TLD-Datei und Tag-Handler-Klasse erstellt haben, bearbeiten Sie die Datei web.xml um Ihre neue Tagbibliothek mit dem Servletcontainer zu registrieren. Fügen Sie einen Taglib-Abschnitt am Ende vor dem End-Tag < / Webapp >:

&lt;taglib> &lt;taglib-uri>mytags&lt;/taglib-uri> &lt;taglib-location>/WEB-INF/exampletaglib.tld&lt;/taglib-location> &lt;/taglib>

Verwenden Sie Ihre benutzerdefinierte Tags

In der JSP-Datei, die Ihre benutzerdefinierten Tags verwenden, verwenden Sie die Taglib-Direktive, um die Tag-Bibliothek anzugeben, den, die Sie verwenden, und das Präfix, die Sie verwenden werde, um auf Ihre Bibliothek verweisen. Entweder finden Sie in Ihrer Bibliothek-Uri, unter dem Pfad:

< % bei Taglib uri=\"/WEB-INF/exampletaglib.tld\" Präfix = \ "Eg\" % >

oder den Namen, die Sie in web.xml als Taglib-Uri angegeben:

< % bei Taglib Uri = \ "Mytags\" Präfix = \ "Eg\" % >

Verwenden Sie Ihre benutzerdefinierte Tag in Ihre JSP, wo die Aktion geschehen kann, soll, mit dem Präfix, das Sie die Taglib-Richtlinie zur Verfügung gestellt:

< zB: MyTag MaxValue = "40" / >