Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Tag-Libraries1 seit JSP Version 1.1 Sammlung selbst definierter Tags (Custom Tags) Tagdefinition: Body Tags halten sich an XML-Konvention Präfix bezeichnet.

Ähnliche Präsentationen


Präsentation zum Thema: "Tag-Libraries1 seit JSP Version 1.1 Sammlung selbst definierter Tags (Custom Tags) Tagdefinition: Body Tags halten sich an XML-Konvention Präfix bezeichnet."—  Präsentation transkript:

1 Tag-Libraries1 seit JSP Version 1.1 Sammlung selbst definierter Tags (Custom Tags) Tagdefinition: Body Tags halten sich an XML-Konvention Präfix bezeichnet Namensraum  Vermeidung von Namenskonflikten

2 Tag-Libraries2 Motivation Vorteile: –Gute Wiederverwendbarkeit und Qualität (Test) –Lesbare und übersichtliche Struktur (Java ausgelagert) –Wissens- und Rollenaufteilung (Entwickler- Designer) Anwendung: –Mehrsprachige JSP-Seiten –Datenbankzugriffe –Automatische Generierung von Emails

3 Tag-Libraries3 Tag-Library-Deskriptor (TLD) –XML-Datei –Beschreibt, welche Tags Tag-Library bereitstellt –Legt für jedes Tag Tag-Handler-Klasse fest Tag-Handler (in WEB-INF/classes | lib) –Javaklassen (eine Klasse pro Tag) –Implementieren Aktionen, die beim Auftreten des Tags ausgeführt werden Funktionsweise Tag-Library Tag-Library- Deskriptor Tag-Handler =+

4 Tag-Libraries4 Einbindung in JSP mit taglib-Direktive: –uri:uniform resource identifier - eindeutige Identifizierung der genutzten Tag-Library –prefix: beliebiges Präfix, um Namenskonflikte zu vermeiden Tag kann dann eingebunden werden:

5 Tag-Libraries5 Tag-Library-Deskriptor (I) TLD ist XML-Dokument: -Elemente:

6 Tag-Libraries6 Tag-Library-Deskriptor (II) -Elemente:

7 Tag-Libraries7 Tag-Library-Deskriptor (III) -Elemente: <!-- legt fest, ob Attributwert zur Laufzeit auswertbar ist, true|false, z.B. /> -->

8 Tag-Libraries8 Tag-Handler Tag-Handler legt Semantik selbstdefinierter Tags fest wird zur Laufzeit eines JSPs instanziiert an bestimmten Stellen der Tag-Bearbeitung wer- den bestimmte Tag-Handler-Methoden aufge- rufen –deshalb Implementierung von Interface Tag bzw. BodyTag aus javax.servlet.jsp.tagext –einfacher verwendbare Defaultimplementationen: Klassen TagSupport bzw. BodyTagSupport

9 Tag-Libraries9 Arten von Tags Einfaches Tag –Body 1x oder gar nicht ausgegeben Iterierendes Tag –Body mehrfach ausgegeben BodyTag –manipuliert Body oder erzeugt ihn komplett neu vor Ausgabe Tag-Arten bauen aufeinander auf

10 Tag-Libraries10 Einfache Tags TAGTag-Handler vor TagObjekt erzeugen An Alle... public int doStartTag(); Aktion implementieren + Rückgabe von: 1.EVAL_BODY_INCLUDE: (Body ausgewertet + in Ausgabe eingefügt) oder 2.SKIP_BODY: (Bodyauswertung unterdrückt) public int doEndTag(); Aktion implementieren + Rückgabe von: 1.EVAL_PAGE: (Seitenverarbeitung fortgesetzt) oder 2.SKIP_PAGE: (Seitenverarbeitung beendet) nach Tagpublic void release() + Objekt zerstören

11 Tag-Libraries11 Tags mit Attributen Attribute dienen Anpassung des Tagverhaltens “/> Definition von Property + zugehörigen get/set- Methoden in Tag-Handler private int size; public void setSize(int size){this.size = size;} public int getSize(){return this.size;} -Element in TLD deklarieren

12 Tag-Libraries12 Iterierende Tags geben Body mehrfach aus z.B. um mehrere Ergebniszeilen einer DB- Anfrage zu formatieren und auszugeben neue Methode: doAfterBody() –nach Bearbeitung des Bodys aufgerufen –Rückgabewert entscheidet, ob Body noch einmal zu bearbeiten (arbeitet wie do...while) EVAL_BODY_AGAIN: noch einmal iteriert SKIP_BODY: Schluss

13 Tag-Libraries13 Tags mit Body-Verarbeitung(I) Tag liest Body vor Verarbeitung aus, verändert ihn oder erzeugt ihn komplett selbst erbt von BodyTagSupport (alle Methoden von TagSupport auch hier gültig) um Body auszuwerten, muss doStartTag() EVAL_BODY_TAG zurückgeben Tag-Handler implementiert i.d.R. doInitBody() und doAfterBody()

14 Tag-Libraries14 Tags mit Body-Verarbeitung(II) neue Methode: doInitBody() –für vom Body abhängige Initialisierungen –nach Setzen des Bodyinhaltes, aber vor Bodybearbeitung aufgerufen –nur bearbeitbar, wenn Rückgabewert doStartTag() EVAL_BODY_BUFFERED wenn Argument einfacher String oder einfacher Ausdruck, dann: Argument als Attribut, nicht als Body übergeben –einfachere Implementierung + Nutzung von Tags mit Attributen als Bodytags

15 Tag-Libraries15 Zusammenfassung weitere Möglichkeiten: –Java-Variable definieren, Wert abfragen, ändern –Kooperation von Tags über gemeinsam genutzte Objekte, z.B. bei verschachtelten Tags sehr gut geeignet, um in JSP-Anwendungen Präsentationsschicht und Logik zu trennen existieren schon viele vordefinierte Tag-Libraries –z.B. unter http://jakarta.apache.org/taglibs oder http://jsptags.com

16 Tag-Libraries16 Quellen Wille, S., Go To Java Server Pages, Addison- Wesley, München, 2001 Bohlen, M.: Die Jakarta Custom Tag Libraries, JavaSPEKTRUM, 3/2002, S.39 http://java.sun.com/products/jsp/tutorial/TagLibraries. pdfhttp://java.sun.com/products/jsp/tutorial/TagLibraries. pdf


Herunterladen ppt "Tag-Libraries1 seit JSP Version 1.1 Sammlung selbst definierter Tags (Custom Tags) Tagdefinition: Body Tags halten sich an XML-Konvention Präfix bezeichnet."

Ähnliche Präsentationen


Google-Anzeigen