Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Benutzerdefinierte Tags

Ähnliche Präsentationen


Präsentation zum Thema: "Benutzerdefinierte Tags"—  Präsentation transkript:

1 Benutzerdefinierte Tags
ETIS SS04

2 Gliederung Motivation TagLibrary-Descriptor Tag-Handler
Einfache Tag-Handler JSP-Fragmente Tags mit Attributen Zusammenfassung Tags ETIS SS04

3 Motivation Vorteile: Beispiel test.jsp:
bessere Trennung Präsentation, Logik Lesbarkeit, Wiederverwendbarkeit, Wartbarkeit Beispiel test.jsp: taglib uri="/WEB-INF/custom.tld" prefix="test" %> <test:loop> Ausgabe </test:loop> Präfix dient zur Vermeidung von Namenskonflikten Tags ETIS SS04

4 TagLibrary-Descriptor(I)
TagLibrary-Descriptor(TLD): simple.jsp: <taglib xmlns="http://java.sun.com/xml/ns/j2ee" ...> <tlib-version>1.0</tlib-version> <short-name>SimpleTagLibrary</short-name> <tag> <name>loop</name> <tag-class>tagtest/LoopAnz</tag-class> <body-content>scriptless</body-content> </tag> </taglib> Tags ETIS SS04

5 TagLibrary-Descriptor (II)
XML-Datei, beschreibt: welche Tags Tag-Library bereitstellt bzw. die Eigenschaften der Tags legt für jedes Tag die Tag-Handler-Klasse fest <name> <! - - Tagname - -> <tag-class> <! - - Tag-Handler zum Tag - -> <body-content> <! - - empty | scriptless | JSP | tagdependent - -> <attribute> <! - - Attribute des Tags - -> Tags ETIS SS04

6 Tag-Handler(I) Tag-Handler: TagTest/LoopAnz.java package tagtest;
import ...; public class LoopAnz extends SimpleTagSupport{ public void doTag() throws JspException, IOException{ JspWriter out = getJspContext().getOut(); JspFragment f = getJspBody(); for (int i = 0; i < 4; i++) { f.invoke(out); }}} Tags ETIS SS04

7 Tag-Handler (II) Dient Ausführung der Tags in JSP-Seiten
Klassen, die Tag-Handler-Interface implementieren ab JSP 2.0: einfacher Tag-Handler (JSP 1.2: drei Interfaces) vereinfachtes Protokoll möglich, durch: keine Skripte im Rumpf der Tags kein Caching von Tag-Handler-Instanzen Nutzung des vereinfachten Protokolls durch: Interfaces SimpleTag implementiert oder TagFiles Tags ETIS SS04

8 Einfache Tag-Handler TagHandler erbt von SimpleTag (SimpleTagSupport)
i.d.R. nur doTag zu überschreiben Tagauswertung: JSP-Container instanziert TagHandler-Klasse nur 1 x Aufruf doTag danach Instanz nicht mehr verwendet Zugriff auf Tag-Rumpf mit getJspBody invoke(null): Ausführung Fragment + Ausgabe Ergebnis invoke(/*Writer*/): soll Rumpf verändert werden, Writer-Objekt zu übergeben Tags ETIS SS04

9 JSP-Fragmente Kapseln zusammenhängende Teile von JSP-Seiten
Teile bestehen nur aus Templates + Aktionen (inkl. JSP-EL) Verwendung von Skripten nicht möglich Fragmente werden in Klassen übersetzt, die Interface JspFragment implementieren Interface definiert nur Methode invoke zum Ausführen des Fragments sind beliebig oft ausführbar haben Zugriff auf Variablen der Jsp-Seiten Tags ETIS SS04

10 Tags mit Attributen im Tag-Handler: in TLD:
set-Methoden für Attribute bereitstellen in TLD: Attribut vereinbaren <name> <!- - Attributname - -> <required> <!- - Attribut erforderlich false | true- -> <rtexprvalue> <!- - Attributwert zur Laufzeit durch Scriptlet zu bestimmen true ansonsten false- -> <fragment> <!- - Attribut == Fragment false | true - -> Tags ETIS SS04

11 Zusammenfassung Präsentation + Logik besser getrennt
JSP 2.0 bringt viele Vereinfachungen im Umgang mit Tags vereinfachtes Protokoll (einfache Tags) Tag Files viele weiter Möglichkeiten, z.B. verschachtelte Tags dynamische Attribute Tag-Library = Tag-Library-Decriptor + Tag-Handler Tags ETIS SS04

12 Literatur Turau, V., Saleck, K., Lenz, C., Web-basierte Anwendungen entwickeln mit JSP2, dpunkt.verlag, Heidelberg, 2004 Wille, S., Go To Java Server Pages, Addison-Wesley, München, 2001 Tags ETIS SS04


Herunterladen ppt "Benutzerdefinierte Tags"

Ähnliche Präsentationen


Google-Anzeigen