Java 1
  • Home
  • Tutorials
    • Hello World
      • Download
      • Installation unter Windows
      • Installation unter Linux
      • Das Hello World Programm
      • Mehr Java
    • Java Konsole
      • Java Konsole Testen
    • Basic Java
      • Java Programme
        • Die Klasse
        • Datentypen
        • Null
        • Casten
        • Operatoren
        • Kontrollstrukturen
        • Arrays
        • Aufgaben
      • Objektorientierte Konzepte
        • Hallo Fenster
        • Objekte einer Klasse
        • Vererbung
        • Interfaces
      • Alles über Klassen
        • Abstrakte Klassen
        • Methoden überschreiben
        • Super
        • Final
        • Innere Klassen
        • Anonyme Klassen
        • Enumerations
      • You're just an object
        • Sichtbarkeit
        • Druckdarstellung
        • Gleichheit
        • Klonen
        • Die Class
        • Serialisierung
    • Java Api
      • Dokumentation
      • Strings
      • Wrapper Klassen
      • System und Runtime
      • Math
      • Exceptions
      • IO
      • Sammlungsklassen
      • AWT und Swing
      • Alle Komponenten
      • Applets
      • Threads
      • Jar
      • Classpath
    • JSP und Servlets
      • Meine erste JSP
        • Downloads
        • Installation unter Windows
        • Installation unter Linux
        • Admin und Manager
        • Webapplication
      • JSP
        • Java Code in HTML einbinden
        • Das HTTP Request - Response Modell
        • Request und Response Objekte
        • Auswerten von Formulardaten
        • Aufgaben
      • Beans
        • Die Session
        • Weitere vordefinierte Objekte
        • Java-Beans
        • Beans programmieren
        • Java-Beans in JSP nutzen
        • Aufgaben
      • Servlets
        • Nutzen der Servlets
        • Servlets programmieren
        • Servlets auf dem Server einrichten
        • Servlets mit JSP
        • Servlets includen
        • Aufgaben
      • Webapplikation
        • Filter
        • Initialisierungsparameter
        • Error Pages
        • Passwortgeschützte Verzeichnisse
        • Bibliotheken nutzen
        • Eine Webapplikation deployen
        • Ausblick: Wie geht's weiter?
        • JSP-Tags Syntaxreferenz
        • Aufgaben
  • Code
    • Web
      • Datenbankverbindungen mit Tomcat
      • Texte richtig encoden
      • HTTPS mit Tomcat
      • HTML Encoden mit Javascript
    • Java
      • Print F
      • Ein generischer Poolbuilder
      • Native Bibliotheken
      • Unique Ids
    • Java FX
      • Balls
      • Hearts
      • Planner
    • Java ME
      • The Next Big Thing
    • System
      • Vi Kommandos
  • Sidemap
  • Impressum
  • Hilfe
Home > Tutorials > JSP und Servlets > Beans > Die Session
  • Hello World
  • Java Konsole
  • Basic Java
  • Java Api
  • JSP und Servlets
    • Meine erste JSP
    • JSP
    • Beans
      • Die Session
      • Weitere vordefinierte Objekte
      • Java-Beans
      • Beans programmieren
      • Java-Beans in JSP nutzen
      • Aufgaben
    • Servlets
    • Webapplikation

Die Session zum Speichern clientbezogener Informationen nutzen

Die Session ist ein Konstrukt, dass es uns ermöglicht, Besucher-spezifische Informationen über mehreren Seitenaufrufe zu halten.

Dies wird erreicht, indem der Server Informationen unter Bezug auf eine bestimmten Session-ID, das ist eine unverwechselbare Kennung, abspeichert. Diese Kennung trägt den Namen JSESSIONID und hat beispielsweise die Form: jsessionid=567FB65D0468447EB04E5440D0238E67.

Da der Server die Verbindung zum Client verliert, sobald er den Request abgearbeitet hat, ist es wichtig, dass der Client (Browser) diese Session-ID beim nächsten Request wieder an den Server schickt, damit er wiedererkannt wird. Das wird erreicht, indem der Server automatisch ein Cookie mit eben diesen Information setzt. Bei jedem Request sendet der Browser dann das Cookie, das der Server automatisch auswertet und uns Programmierern die clientbezogenen Informationen zur Verfügung stellt.

Problematisch wird es, wenn der Browser keine Cookies akzeptiert. In diesem Fall müssen wir eine andere Möglichkeit finden, die Session-ID zu transportieren. Das geschieht, indem wir die Session ID mit der aufgerufenen URL senden lassen. Der Server ist dann auf unsere Unterstützung angewiesen, indem wir dafür sorgen, dass die Session ID auf jeden Link geschrieben wird (sog. URL rewriting.).

Auch die Session ist in JSP in einem Objekt gekapselt und steht in der Seite ohne weiteres unter dem Namen session zur Verfügung. Sie ist vom Typ: javax.servlet.http.Session. Daten, die Sie auf der Session speichern wollen, müssen ebenfalls Objekte sein. Sie müssen das Interface java.io.Serializable implementieren, das bedeutet, das Objekt hat eine Form, die gespeichert und wiederhergestellt werden kann. Eine java.net.URL ist beispielsweise ein serialisierbares Objekt, weil es im wesentlichen die Information einer URL (.z.B. http://java.sun.com) enthält, die in eine Datei geschrieben werden kann. Eine java.net.URLConnection dagegen ist nicht serialisierbar, da die Verbindung zu einer URL nicht gespeichert und wieder geladen werden kann. Vielmehr wird sie irgendwann beispielsweise vom Server geschlossen und ist weg. Um sie wiederzubekommen, muss sie neu erzeugt werden.

Objekte werden auf der Session unter einem Namen gespeichert. Sie heißen "Attribute" der Session:

Code: /bsp/kap2/session_simple.jsp

<%
  // Objekt erzeugen.
  java.util.Properties client=new java.util.Properties();  
  // Objekt mit Daten f?llen
  client.setProperty("firstname","Hans");
  client.setProperty("lastname","Wurst"); 

  // Name des Sessionobjekts
  String scopeName="myClient";

  // Objekt auf der Session speicher
  session.setAttribute(scopeName,client);

  // Objekt aus der Session holen
  java.util.Properties aClient=
    (java.util.Properties)session.getAttribute(scopeName);
  out.println("In der Session:");
  out.println(aClient);

  // Objekt aus der Session entfernen
  session.removeAttribute(scopeName);
  out.println("Und wieder weg:");
  out.println(session.getAttribute(scopeName));
%>

Sie sollten die Session immer dann nutzen, wenn die Formulardaten über mehrere Seiten erheben oder Userinformationen auf mehreren Seiten benötigen (Browsertyp, Flash-Plugin, User eingeloggt).

Das folgende Beispiel zeigt, wie Sie die Session nutzen können, um einen geschützten Bereich aufzubauen. Im geschützten Bereich überprüfen Sie, ob das Session Objekt vorhanden ist:

Session Objekt überprüfen

// Überprüfen Sie, ob das Session Objekt vorhanden ist
// also nicht null ist
if (session.getAttribute("userName")==null ) {
   // Wenn es nicht da ist, schicken Sie den User auf die Login Seite
   response.sendRedirect("session_login.jsp");
} else {

Ist das Session-Objekt nicht vorhanden, senden Sie einen Redirekt auf die Login-Seite, wo Sie ein handelsübliches Formular zur Eingabe von Username und Passwort anbieten. Überprüfen Sie die gesendeten Angaben und setzen Sie das Session Objekt, wenn die Eingabe gültig ist:

Code: /bsp/kap2/session_login.jsp

<% 
  // Prüfen, ob username und password im request sind und kein leerer String sind.
  // Bitte beachten: Inputfelder werden immer gesendet, auch wenn sie keine Zeichen
  // enthalten.
  if (request.getParameter("username") != null && request.getParameter("username").length()>0 ) {
    if (request.getParameter("password") != null && request.getParameter("password").length()>0 ) {
      
      // ToDo: Check username and password against database
      
      // Session Objekt setzen; damit ist der User eingeloggt
      session.setAttribute("userName",request.getParameter("username"));
    }
  } else if (request.getParameter("logout")!=null ) {
    session.removeAttribute("userName");
  }

  if (session.getAttribute("userName")==null) {
 %>
 
Beans
Weitere vordefinierte Objekte »
Show/Hide Footer Actions

Kommentare:

Sie müssen angemeldet sein um eine Nachricht zu erstellen. Anmelden »
© 2012 Java 1. Alle Rechte vorbehalten.
Anmelden
concrete5 - open source CMS
Theme by Site5 / Mnkras.