Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Generics<T>
8 Äußere.innere Klassen
9 Besondere Klassen der Java SE
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Bits und Bytes und Mathematisches
13 Datenstrukturen und Algorithmen
14 Threads und nebenläufige Programmierung
15 Raum und Zeit
16 Dateien, Verzeichnisse und Dateizugriffe
17 Datenströme
18 Die eXtensible Markup Language (XML)
19 Grafische Oberflächen mit Swing
20 Grafikprogrammierung
21 Netzwerkprogrammierung
22 Verteilte Programmierung mit RMI
23 JavaServer Pages und Servlets
24 Datenbankmanagement mit JDBC
25 Reflection und Annotationen
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
geb., mit DVD
1482 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1506-0
Pfeil 23 JavaServer Pages und Servlets
  Pfeil 23.1 Dynamisch generierte Webseiten
    Pfeil 23.1.1 Was sind Servlets?
    Pfeil 23.1.2 Was sind JavaServer Pages?
  Pfeil 23.2 Servlets und JSPs mit Tomcat entwickeln
    Pfeil 23.2.1 Servlet-Container
    Pfeil 23.2.2 Entwicklung der Servlet-/JSP-Spezifikationen
    Pfeil 23.2.3 Webserver mit Servlet-Funktionalität
    Pfeil 23.2.4 Tomcat installieren
    Pfeil 23.2.5 Ablageort für eigene JSPs
    Pfeil 23.2.6 Webapplikationen
    Pfeil 23.2.7 Zuordnung von Webapplikationen zu physikalischen Verzeichnissen
    Pfeil 23.2.8 Web-Projekt mit Eclipse IDE for Java EE Developers
  Pfeil 23.3 Statisches und Dynamisches
    Pfeil 23.3.1 Statischer Template-Code
    Pfeil 23.3.2 Dynamische Inhalte
    Pfeil 23.3.3 Kommentare
  Pfeil 23.4 Die Expression Language (EL)
    Pfeil 23.4.1 Operatoren der EL
    Pfeil 23.4.2 Literale
    Pfeil 23.4.3 Implizite EL-Objekte
  Pfeil 23.5 Formulardaten
    Pfeil 23.5.1 Einen Parameter auslesen
    Pfeil 23.5.2 HTML-Formulare
  Pfeil 23.6 Auf Beans zurückgreifen
    Pfeil 23.6.1 Beans in JSPs anlegen
    Pfeil 23.6.2 Properties einer Bean im EL-Ausdruck erfragen
    Pfeil 23.6.3 Properties mit <jsp:setProperty> setzen
    Pfeil 23.6.4 Bean-Klasse zum Testen von E-Mail-Adressen
    Pfeil 23.6.5 Parameterwerte in Bean übertragen
  Pfeil 23.7 JSP-Tag-Libraries
    Pfeil 23.7.1 Standard Tag Library (JSTL)
  Pfeil 23.8 Einbinden und Weiterleiten
    Pfeil 23.8.1 Einbinden von Inhalten
    Pfeil 23.8.2 Forward und Redirect
    Pfeil 23.8.3 Applets einbinden
  Pfeil 23.9 Skripting-Elemente in JSPs
    Pfeil 23.9.1 Scriptlets
    Pfeil 23.9.2 JSP-Ausdrücke
    Pfeil 23.9.3 JSP-Deklarationen
    Pfeil 23.9.4 Quoting
    Pfeil 23.9.5 Entsprechende XML-Tags
    Pfeil 23.9.6 Implizite Objekte für Scriptlets und JSP-Ausdrücke
  Pfeil 23.10 JSP-Direktiven
    Pfeil 23.10.1 page-Direktiven im Überblick
    Pfeil 23.10.2 Mit JSPs Bilder generieren
  Pfeil 23.11 Sitzungsverfolgung (Session Tracking)
    Pfeil 23.11.1 Lösungen für Sitzungsverfolgung
    Pfeil 23.11.2 Sitzungen in JSPs
    Pfeil 23.11.3 Auf Session-Dateien zurückgreifen
  Pfeil 23.12 Servlets
    Pfeil 23.12.1 Servlets compilieren
    Pfeil 23.12.2 Servlet-Mapping
    Pfeil 23.12.3 Der Lebenszyklus eines Servlets
    Pfeil 23.12.4 Mehrere Anfragen beim Servlet und die Thread-Sicherheit
    Pfeil 23.12.5 Servlets und Sessions
    Pfeil 23.12.6 Weiterleiten und Einbinden von Servlet-Inhalten
  Pfeil 23.13 Zum Weiterlesen


Rheinwerk Computing - Zum Seitenanfang

23.11 Sitzungsverfolgung (Session Tracking)  Zur nächsten ÜberschriftZur vorigen Überschrift

Jeder Auftrag an den Webserver wird unabhängig von anderen Aufträgen verwaltet. Wenn wir beispielsweise eine Seite neu laden oder einen Verweis verfolgen, weiß der Server nicht (beziehungsweise interessiert sich nicht dafür), dass die Anfrage von uns kam. Was an diesem Verhalten deutlich wird, ist das Fehlen eines Zustands. Es fehlt also die Möglichkeit, dass ein Client vom Server identifiziert wird und einem aktuellen Zustand des bidirektionalen Kommunikationsverlaufes zugeordnet werden kann. Der Zustand bezieht sich hier auf eine nicht-existente serverseitige Information. Aus diesem Grund wird HTTP auch als zustandsloses Protokoll bezeichnet. Dass dies aber nicht immer wünschenswert ist und sogar einen Nachteil darstellen kann, sehen wir an unterschiedlichen Anforderungen:

  • Ein Warenkorb für den Einkauf: In Online-Systemen wird ein Einkaufswagen gefüllt, und unterschiedliche Webseiten informieren Kaufwillige über die Produkte. Wenn der Server die Seitenanfrage einem Client nicht zuordnen kann, ist es nicht möglich, den Warenkorb individuell zu füllen.
  • Individualisierung: Benutzer können persönlich zugeschnittene Webseiten sehen und etwa das Wetter auf Bali auf der Startseite auswählen und die Fußballergebnisse von Schalke 04.
  • Demoskopie: Das System eignet sich auch für die Benutzerüberwachung. Besucht ein Benutzer eine Seite mehrmals, kann der Betreiber dies erkennen und diese Information mit einem »Ist-beliebt-Faktor« verbinden. Diese Information lässt sich natürlich kommerziell gut nutzen.

Rheinwerk Computing - Zum Seitenanfang

23.11.1 Lösungen für Sitzungsverfolgung  Zur nächsten ÜberschriftZur vorigen Überschrift

Es ist also ein System gesucht, das es dem Server erlaubt, den Client zu identifizieren, auch wenn HTTP ein zustandsloses Protokoll ist. Als Lösungen bieten sich an:

  • Cookies: Ein Cookie speichert eine Kennung, sodass der Server den Client erkennt und die Informationen für ihn speziell aufbereitet. Obwohl dies in Java durch die Cookie-Klasse einfach möglich ist, hat dieser Ansatz noch einige Schwächen. Dem Servlet fällt die Aufgabe zu, aus der Cookie-Kennung die entsprechende Sitzung herauszusuchen und die Daten zu holen. Ein weiteres Problem ergibt sich dadurch, dass Cookies zwar möglich sind, aber vom Benutzer abgelehnt werden können, da dieser seine Anonymität aufs Spiel gesetzt sieht. Schaltet der Benutzer in seinem Lieblingsbrowser die Cookies aus, können wir nichts machen. Doch auch wenn Cookies verwendet werden, bleibt die Frage, wie lange der Cookie gültig sein soll. Hier ist zu überlegen, ob die Voreinstellung, dass der »Keks« nur eine Sitzung übersteht, sinnvoll ist.
  • URL-Rewriting: Da ein Servlet vom Aufrufer Parameter bekommen kann, ist es eine nette Idee, an die URL einen Wert anzuhängen, der die aktuelle Sitzung kennzeichnet. Diese Kennung entspricht dann genau dem Wert des Cookies. Die Lösung ist simpel und funktioniert bei allen Browsern. Der Nachteil auf der Serverseite ist wiederum, dass uns die Aufgabe zufällt, der Kennung die Sitzung zuzuordnen. Zudem ist Vorsicht geboten, da diese Kennung bei jedem Verweis wieder angehängt wird. Außerdem ist es für den Benutzer sehr unschön, diese Kennungen zu sehen, zumal sie in die Bookmarks übernommen werden. Dies führt zu dem Problem, dass eine Sitzung angesprochen werden kann, die gar nicht mehr existiert. Dies ist ein sehr schwerwiegendes Problem, da die Anhängsel ja nicht wie Cookies automatisch veralten.
  • Versteckte Felder (engl. hidden fields): In HTML-Seiten lassen sich versteckte Informationen in Formularen anlegen, die beim Versenden automatisch mitgeschickt werden. Dies sieht etwa so aus:
<input type="hidden" name="session" value="..." />
  • Diese versteckten Informationen können auch genutzt werden, um eine Sitzungs-ID mitzuschicken. Der Vorteil ist, dass wir wieder keine Cookies benötigen und die URL nicht länger wird, der Nachteil, dass die Information immer dynamisch mit eingebaut werden muss.

Rheinwerk Computing - Zum Seitenanfang

23.11.2 Sitzungen in JSPs  Zur nächsten ÜberschriftZur vorigen Überschrift

Verbindet sich ein Browser zum ersten Mal mit einer JSP, so erzeugt der Servlet-Container automatisch eine neue Sitzung und sendet standardmäßig einen Cookie zurück. Client und Server tauschen dann bei allen weiteren Anfragen diesen Cookie aus, sodass der Server den Client wiedererkennen kann. Wenn der Benutzer Cookies ablehnt, müssen wir eine zweite Implementierung anbieten, die Sitzungsinformationen an die URL anhängt, aber das soll jetzt kein Thema sein.


Rheinwerk Computing - Zum Seitenanfang

23.11.3 Auf Session-Dateien zurückgreifen  topZur vorigen Überschrift

Der Cookie, den der Server automatisch generiert, enthält eine ID, und diese ID ist mit einem Assoziativspeicher verbunden. In diesen Assoziativspeicher können wir Schlüssel-/Werte-Paare setzen oder Werte über die Schlüssel erfragen. Für den Assoziativspeicher gibt es in der EL die implizite Variable sessionScope – sie bietet alle Daten einer Sitzung. Zusammenfassend lässt sich festhalten, dass die unterschiedlichen impliziten EL-Objekte pageScope, requestScope, sessionScope und applicationScope alle jeweils Zugriffe auf Daten in unterschiedlichen Gültigkeitsbereichen ermöglichen.


Beispiel Lege eine Variable über ein Scriptlet in den Session-Scope und lies sie mit der EL wieder aus:

<% session.setAttribute( "url", "www.tutego.com" ); %>
Die URL in der Session was: ${sessionScope.url}.

Die erste Zeile macht deutlich, dass für das Setzen (das Gleiche gilt für das Löschen) auf Scriptlets zurückgegriffen werden muss oder auf die JSTL, mit der das Setzen so aussehen würde: <c:set var="url" value="www.tutego.com" scope="session" />. Die Variable session ist eine JSP-Variable vom Typ HttpSession und bietet Methoden wie setAttribute(), removeAttribute(). In realistischen Programmen wird eine JSP keine Daten verändern, sondern nur Servlets bzw. ein Framework.



Beispiel Beende eine Session:

<% session.invalidate(); %>

Beenden wir die Sitzung – etwa nach einem Logout – nicht selbst, kommt ein Timeout und sie wird automatisch beendet.




Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de