Inhalt
Weitere Möglichkeiten
Sitzungsverfolgung
Die Java Server Pages bieten sehr einfache Methoden um eine Sitzungsverfolgung zu
implementieren. Dazu verwendet man bei der Direktive page
das Attribut session
mit dem Wert (dies ist sogar die Default-Einstellung).
Damit steht für die Sitzing das implizite Objekt session
zur Verfügung.
Ausserdem besteht die Möglichkeit, eine JavaBean in den
Gültigkeitsbereich (scope) session
einzubinden, die für alle
weiteren Anfragen des selben Benutzers bestehen bleibt. (s. die Aktion useBean)
Die JSP-Server versucht, bei eingestellter Sitzungsverfolgung, dem Client ein Cookie
zu senden und dieses bei jeder weiteren Anfrage zur Identifikation des Benutzers zu
verwenden. Er erkennt dabei, ob der Benutzer die Verwendung von Cookies deaktiviert hat.
In einem solchen Fall wird die eindeutige Sitzungs-Nummer (SessionId) als Parameter
an jeden Link innerhalb der Seite, der zur Web-Anwendung zurückführt angehängt.
Dieses Verfahren heißt URL-Rewriting. Der Programmierer muss allerdings
dabei jede in seiner JSP verwendete Link-Adresse mit Hilfe der Methode
java.lang.String encodeURL(java.lang.String url)
bearbeiten. Diese
Methode hängt an die URL die ID der aktuellen Sitzung an, sofern das Sitzungsmanagement
nicht über Cookies realisiert werden kann.
eigene Tags definieren
Ein großer Schritt in Richtung Modularisierung und Trennung zwischen Programm-Code
und HTML-Design gelingt den Java Server Pages mit Hilfe von selbst definierten Tags.
Dabei kann der Programmierer beliebig viele eigene Tags, die dann mit Hilfe von
XML-Namensräumen eindeutig in HTML-Seiten verwendet werden können, erzeugen.
Die Prozedur dazu ist leider etwas komplexer, weswegen vorher geprüft werden sollte,
ob sich der große Aufwand für die betreffende Web-Anwendung lohnt.
Die Unterstützung hierfür bietet das Package javax.servlet.jsp.tagext
an.
Für jedes selbst definierte Tag muss eine Klasse mit dem Interface Tag
implementiert werden. Der JSP-Server ruft beim Auftreten eines solchen Tags
innerhalb einer JSP festgelegte Methoden dieser so genannten Tag-Handler auf, nachdem
er ein Objekt dieser Klasse erzeugt hat. Zur einfacheren Programmierung existieren
für Tag-Handler Klassen schon vorgefertigte "Support"-Klassen
(TagSupport
und BodyTagSupport
), die die meisten Methoden
schon implementiert haben. Der Programmierer braucht nur noch die für seinen
speziellen Fall benötigten Erweiterungen einbauen.
Zur Definition der Namen und der möglichen Attribute der selbst definierten
Tags werden XML-Dokumente verwendet, die so genannten Tag-Bibliotheks-Descriptoren
(tld = tag library descriptor).
Die Syntax dieser XML-Dokumente wiederum ist festgelegt in einer DTD (Document Type Definition):
http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd
Die TLD-Datei wird über die taglib-Direktive lokalisiert,
in der auch der XML-Namensraum der neuen Tags angegeben wird.
Inhalt