Open Source im professionellen Einsatz
Newsletter abonnieren
HEFTARCHIV | NEWS | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO

Partner-Links:
Shopping
Yatego Deutschlands größte Shoppingmall. 7000 Shops,
2.5 Mio Artikel. Alle Bestseller, Gutscheine und Liveshopping.

Firewall bei Mercateo kaufen.

Ein Preisvergleich bei Hardware lohnt sich.

Bei inkpool.de Laserdrucker und mehr bestellen.

Sie suchen günstige Laptops? Schauen Sie doch mal bei Preisvergleich.org, Preisvergleich.eu, Preisvergleich.ch und Preisvergleich.at vorbei.

Linux Jobs


user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2003  »  05  »  Trennkost  

RSS-Feed der aktuellen News von Linux-Magazin Online
Diesen Artikel drucken Diesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren

Die JSP Standard Tag Library trennt Code und Darstellung

Trennkost

von Bernhard Bablok
Erschienen im Linux-Magazin 2003/05

Die saubere Trennung von Programmlogik (Servlets) und Anzeige (Java Server Pages) ist nur in sehr einfachen Server-Anwendungen streng durchzuhalten, in der Praxis aber meist unmöglich. Taglibs bieten hierfür eine elegante Lösung.

Das Beispiel aus den letzten Coffee-Shop-Folgen (siehe [1] und [2]) verwendet das MVC-Paradigma (Model, View, Controller), um die Programmlogik sauber vom HTML-Code zu trennen. Spätestens bei der Ausgabe von Suchergebnissen ist diese saubere Trennung aber nicht mehr möglich, da die Ergebnisseite eine variable Anzahl von Treffern in einer Tabelle anzeigen muss.

Die klassische Lösung des Problems mit JSP-Mitteln sieht dann ähnlich aus wie in Listing 1. Scriptlets innerhalb der JSP-Seite sind ein mächtiges Mittel, sie erlauben den Einsatz aller Java-Features. Aber selbst bei einfachen Problemen wird die JSP-Seite schnell kompliziert und sowohl die HTML-Struktur als auch der Code geraten unübersichtlich.

Tag-Libraries, meist kurz Taglibs genannt, sind schon seit der ersten JSP-Version die Lösung des Problems. Sie kapseln die Programmlogik innerhalb einer JAR-Bibliothek. Der Webautor verwendet dann nur noch die definierten Tags - und den Rest erledigt die Bibliothek im Hintergrund.

Diese Folge des Coffee-Shops stellt das Konzept von Taglibs, ihre Installation und Konfiguration vor. Insbesondere die JSP Standard Tag Library (JSTL) steht dabei im Mittelpunkt. In der nächsten Folge geht es dann um die Programmierung eigener Taglibs.

Was ist ein Tag?

Auszeichnungssprachen wie HTML oder SGML und ihre Nachkommen kennen den Begriff Tag, um Dokumente zu strukturieren. In HTML stellt zum Beispiel das »<h1>«-Tag eine Überschrift erster Ordnung dar. Jede HTML-Version definiert die verfügbaren Tags und ihre Beziehung zueinander.

HTML ist im Gegensatz zu XML sehr restriktiv: Eigene Tags sind nicht erlaubt. Der Browser-Krieg wurde aber lange Zeit mit dem unlauteren Mittel der proprietären Erweiterung geführt. Neue oder erweiterte Tags gaben den Webautoren mehr Mittel in die Hand, um ihre Seiten zu gestalten. Der Benutzer hatte das Nachsehen, er war auf den Browser des Herstellers X angewiesen, andernfalls stellte sein Browser die Seite falsch oder gar nicht dar. Dabei zahlen auch die Webautoren und ihre Auftraggeber die Zeche: Je nach Browser müssen sie unterschiedliche Seiten bauen, der Kunde ist schließlich König.

Taglibs erlauben ebenfalls die Definition eigener Tags. Sie sollen aber nicht die Kompatibilität weiter untergraben, sondern werden letztlich zu normalem HTML aufgelöst. Ein Webautor könnte also ein Firmenlogo in eine JSP-Seite entweder über

<img src="firma.gif"/>

oder über

<logo/>

einbinden. Die hinter dem »<logo/>«-Tag stehende JAR-Bibliothek erzeugt dann den klassischen HTML-Code. Eigene Tags können auch Attribute enthalten, auch Tags mit Kindelementen (» <mein Tag>Text</mein Tag>«) sind natürlich möglich.

Das Logo-Beispiel ist etwas trivial und trifft den Kern nur zum Teil, da es nicht darum geht, HTML-Code wieder in Java zurückzuverlagern, sondern vielmehr komplizierte Logik zu kapseln. Ein Beispiel in dieser Richtung könnte ein Chart eines Aktienkurses sein:

<chart wpkn="abcd"/>

Hier werden aus einer Datenbank die Daten über die Wertpapierkennung abgerufen, dann wird on the fly eine Grafik erzeugt und mit einem normalen Image-Tag dargestellt.

Die Standard Tag Library

Auch wenn aus Sicht des Browsers eigene Tags unsichtbar bleiben, so begibt sich doch der Webautor in eine neue Abhängigkeit. Ob die Taglibs vom Hersteller der Entwicklungsumgebung oder gar der Servlet-Engine stammen: Aus der Sicht des Autors sind sie eine proprietäre Erweiterung. Java wäre aber nicht Java, wenn es hier nicht zu einer Standardisierung gekommen wäre.

Der Java Community Process (JCP) diskutiert und erweitert sowohl Java als Sprache als auch die zentralen Standards rund um Java. Die Arbeitsgruppe JSR-052[3] definierte die JSP Standard Tag Library (JSTL). Zurzeit ist die Version 1.0 aktuell. Die JSTL-Referenzimplementation wird - nicht besonders überraschend - innerhalb des Jakarta-Projekts gepflegt und ist somit frei verfügbar. Auf diese Weise ist auch ein perfektes Zusammenspiel mit dem Tomcat-Server garantiert.

Das Jakarta-Taglib-Projekt[4] geht aber über die JSTL noch hinaus. Das Projekt ist in folgende Kategorien aufgeteilt:

  • JCP Standardized Tag Libraries - also die JSTL-Tags
  • Supported Tag Libraries - weitere Tags, die offiziell vom
    Jakarta-Taglibs-Projekt unterstützt werden
  • Tool Extensions - Erweiterungen für
    Web-Entwicklungsumgebungen
  • Sandbox - das sind neue Bibliotheken, die noch nicht offiziell
    unterstützt werden

Da sich Taglibs ganz hervorragend als wieder verwendbare Komponenten eignen, hat sich schon eine große Liste von verfügbaren Taglibs angesammelt. Ein Nachteil ist die wachsende Anzahl von JAR-Bibliotheken, die für eine Anwendung in der richtigen Version zusammengestellt werden müssen.

Tabelle
1: Core-Tags von JSTL

 

Name

Beschreibung

<c:catch>

Abfangen von Exceptions

<c:choose>

Bedingte Verarbeitung, zusammen mit <c:when> und
<c:otherwise> (Beispiel im Haupttext). Die Testbedingung wird
als Attribut im <c:when>-Tag formuliert.

<c:forEach>

Auswertung der eingeschlossenen Tags über eine durch eine
Variable übergebenen Menge (Beispiel im Haupttext)

<c:forTokens>

Analog zu <c:forEach> wird hier über Tokens eines
Strings iteriert

<c:if>

Ausgabe des eingeschlossenen Textes, wenn die Bedingung wahr
ist. Ein Else-Zweig existiert nicht. Falls dieser notwendig ist,
muss <c:choose> verwendet werden.

<c:import>

Einbinden von internen (analog <jsp:include>) oder
externen Ressourcen

<c:otherwise>

Siehe <c:choose>

 

<c:out>

Ausgabe von Text

<c:param>

Hinzufügen von Request-Parametern zu URLs. Wird zusammen
mit <c:import>, <c:redirect> und <c:url>
verwendet.

<c:redirect>

Senden einer Redirect-Response an den Client
»redirect«

<c:remove>

Entfernen einer Variablen aus einem Gültigkeitsbereich
(Scope: Page, Request, Session, Application)

<c:set>

Setzen einer Variablen oder eines Attributs eines Objekts (Map
oder Bean)

<c:url>

Encodiert und konvertiert URLs

<c:when>

Siehe <c:choose>

 

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Diese Seite zu Mister Wong hinzuf�gen Webnews yigg it! Slashdot it! Twittern!
Ähnliche Artikel
Dreh-Moment Objektpersistenz mit dem Torque-Framework
Nicht nur ein Katzensprung Tomcat in der aktuellen Version 4.1 - Architektur, Installation, Konfiguration
Ein starkes Paar Java Server Pages im Zusammenspiel mit Servlets - Teil 1
Der mit dem Kater tanzt Tomcat in eine Apache-Umgebung integrieren
Gefährlicher V8 IBM Lotus Notes 8 auf Linux
Viel Holz für den Rahmen PHP-Frameworks im Überblick
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Kommentare (0)
 

Impressum |Datenschutzerklärung | © 2010Linux New Media AG
Partner-Sites
Deutschland: [LinuxUser] [EasyLinux] [Linux-Community] [Linux Technical Review] [Ubuntu User]
Europa: [EasyLinux Polen] [Linux Magazine Polen] [Linux Magazine Spanien]
International: [Linux Magazine International] [Linux Pro Magazine] [Ubuntu User] [Linux Magazine Brasilien] [EasyLinux Brasilien]