Inhalt

JSP - Direktiven

Direktiven sind ein Mittel, um Einfluss auf die Übersetzung und die Ausführung einer Java Server Page zu nehmen. Aus Gründen der Übersichtlichkeit sollten Direktiven stets am Anfang einer Datei stehen, obwohl sie an einer beliebigen Stelle untergebracht werden könnten.
Die Direktiven haben alle folgende Syntax:

<%@ Direktivenname { attributname = "wert" } ... %>

Es gibt seit der Version 1.1 der Java Server Pages folgende drei Direktiven:

die include - Direktive

<%@ include file="dateiname" %>

Die Direktive include wird benutzt, um Quellcode-Teile in verschiedenen Java Server Pages wieder zu verwenden. Noch vor dem Übersetzen der JSP wird die in der Direktive angegebene Datei in die Java Server Page an die Stelle der include-Direktive eingefügt. Als Pfadangaben sind dabei sowohl relative, als auch absolute Pfade möglich.
Ein Beispiel für die Verwendung der include-Direktive ist das Einbinden einer Fußzeile, die auf jeder Seite einer Web-Anwendung eingebunden werden soll und zum Beispiel eine Kontaktadresse beinhaltet.

die page - Direktive

<%@ page language="java"
         extends="Klassenname"
         import="Klassen-/Paket- Liste"
         buffer="none | n [KiloByte]"
         autoFlush="true | false"
         info="Infotext"
         inThreadSave="true | false"
         contentType="MIME-Type [; charset]"
         errorPage="URL"
         isErrorPage="true | false"
         session="true | false"
%>

Die page-Direktive wird dazu benutzt, einige Voreinstellungen zur aktuellen Java Server Page zu treffen. Es können zwar mehrere page-Direktiven innerhalb einer JSP auftreten, jedoch darf ein Attribut nur ein einziges mal in der JSP vorkommen.
die einzelnen Attribute werden im folgenden erklärt:
language
Hier wird der Name der verwendeten Skriptsprache angegeben. Da momentan nur die Sprache Java benutzt werden kann, ist der einzig mögliche Wert und damit auch default-Wert "java". Diese Angabe ist also nicht zwingend erforderlich.
extends
Extends ermöglicht es, eine eigene Oberklasse für die Java Server Page anzugeben. Diese Klasse muss das Interface javax.servlet.jsp.JspPage implementieren.
import
Es handelt sich hierbei um die Java import-Anweisung, welche die angegebenen Klassen und Pakete in die Java-Umgebung einbindet, damit sie im Quellcode direkt verwendet werden können. Mehrere Import werden dabei wie gewohnt dur Komma getrennt.
buffer
Alle Ausgaben der Java Server Page werden zur effizienteren Übertragung vorher gepuffert. Mit dem buffer-Attribut ist es möglich, die Größe dieses Puffers zu verändern. Die Minimal-Einstellung beträgt 8 kB und ist auch default-Einstellung. Es kann also eine beliebige Zahl (größer als 8) angegeben werden, um die Puffergröß zu erhöhen oder "none", um das Puffern zu unterdrücken. In diesem Fall werden alle Ausgaben direkt zum Client geschickt. Zu Beachten ist, dass eventuell eigens gesetzte HTTP-Header (z.B. durch request.setHeader(Name, Wert)) gesetzt werden müssen, bevor der Puffer zum Ersten Mal Daten zum Client sendet. Ausserdem wird im Fall einer Exception zur Laufzeit der Puffer-Inhalt gelöscht und eine Fehlerausgabe gestartet. Dies kann jedoch nur erfolgen, wenn der Pufferinhalt noch nicht versendet wurde.
autoFlush
Mit der Standart-Einstellung "true" wird der durch buffer= Konfigurierte Puffer automatisch geleert, wenn er gefüllt ist. Das kann man mit der Einstellung "false" verhindern. Jetzt wird im Fall eines vollen Puffers eine IOException geworfen, falls der Puffer nicht explizit durch request.flushBuffer() geleert wird.
info
Die hier angegebene Zeichenkette kann der Programmierer für seine eigenen Zwecke verwenden (z.B. um eine Versionsnummer zu vergeben). Der Wert kann innerhalb der JSP mit der Methode getServletInfo() abgerufen werden.
isThreadSave
Wird hier "false" angegeben, so wird nicht für jede Client-Anfrage ein neuer Thread erzeugt. Eine Anfrage muss so warten, bis die aktuelle Anfrage abgearbeitet ist. Default-Einstellung ist allerdings "true", wobei man für die Synchronisation beim Zugriff auf gemeinsame Ressourcen selbst kümmern muss.
contentType
Hier wird der MIME-Type der Ausgabedaten angegeben. Voreinstellung ist "text/html; charset=ISO-8859-1".
errorPage
Hierbei handelt es sich um ein praktisches Hilfsmittel zur Fehlerbehandlung. Wird in einer Java Server Page eine Ausnahme geworfen und nicht abgefangen, so wird durch die Servlet-Umgebung eine Fehlerausgabe generiert und an den Client gesendet. Man kann dies mit dem errorPage-Attribut verhindern. Hier wird der URL einer anderen JSP angegeben, die eigene Fehlerausgaben erzeugt und Aufgaben zur Fehlerbehandlung, wie z.B. Protokollieren in einer Log-Datei oder Absenden einer Meldung an den verantwortlichen Ansprechpartner, übernimmt. Diese Fehler-Behandlungs-JSP wird im Fall einer Exception aufgerufen.
isErrorPage
Dieses Attribut wird bei einer JSP, die wie oben beschrieben zur Fehlerbehandlung eingesetzt wird, auf "true" gesetzt. Das ermöglicht der JSP Zugriff auf das implizite Objekt mit dem Namen exception, das Informationen über die Ausnahme enthält.
Default-Wert ist "false".
session
Mit dem session-Attribut schaltet man die automatische Sitzungsverfolgung ein bzw. aus. Mit "true" erhält man Zugriff auf das implizite Objekt session, das Informationen über die aktuelle Sitzung (z.B. SessionID, eigene Informationen) beherbergt. Die Anwendung wird im Abschnitt über Sitzungsverfolgung genauer behandelt.
Default-Einstellung ist "true".


die taglib - Direktive

<%@ taglib uri="URI" prefix="Namensraum" %>

Die Java Server Pages erlauben dem Programmierer, eigene Tags zu definieren, die dann einfach in der JSP anzuwenden sind und die Trennung zwischen Design und Programmierung innerhalb des Dokuments erleichtern. Das Attribut uri enthält hierbei die Position einer Datei, die die Tag-Definitionen (tld = tag library descriptor) enthält. Mit prefix wird ein XML-Namensraum angegeben, in dem die neu definierten Tags erreichbar sind.
Eine ausführliche Beschreibung existiert im Abschnitt über eigene Tags definieren.

Inhalt