Sitzungsverwaltung in Servlets entwickeln

Informationen zu diesem Vorgang

Diese Informationen bilden zusammen mit dem Codierungsbeispiel SessionSample.java ein Programmiermodell für die Implementierung von Sitzungen in Ihre eigenen Servlets.

Vorgehensweise

  1. Rufen Sie das HttpSession-Objekt ab.

    Verwenden Sie zum Anfordern einer Sitzung die Methode "getSession" des Objekts "javax.servlet.http.HttpServletRequest" in der Java™ Servlet 3.0 API.

    Wenn Sie zum ersten Mal ein HttpSession-Objekt anfordern, hat die Sitzungsverwaltung drei Möglichkeiten, die Sitzung zu überwachen: Cookies, Umschreiben von URLs oder SSL-Daten (SSL).
    Veraltetes Feature Veraltetes Feature: Die Sitzungsüberwachung mithilfe der SSL-ID ist seit WebSphere Application Server Version 7.0 veraltet. Sie können die Sitzungsüberwachung für die Verwendung von Cookies konfigurieren oder die Anwendung für die Verwendung der URL-Umschreibung ändern.depfeat

    Angenommen, die Sitzungsverwaltung verwendet Cookies. In diesem Fall erstellt die Sitzungsverwaltung eine eindeutige Sitzungs-ID und sendet diese in der Regel als Cookie an den Browser zurück. Jede weitere Anfrage von diesem Benutzer (mit demselben Browser) übergibt das Cookie mit der Sitzungs-ID, anhand derer die Sitzungsverwaltung das vorhandene HttpSession-Objekt des Benutzers finden kann.

    In Schritt 1 des Codebeispiels ist Boolean(create) auf true gesetzt, sodass das HttpSession-Objekt erstellt wird, sofern es noch nicht vorhanden ist. (Bei der API Servlet 2.3 und höher ist die Methode javax.servlet.http.HttpServletRequest.getSession() ohne booleschen Wert standardmäßig auf true gesetzt und erstellt eine Sitzung, sofern für diesen Benutzer noch keine Sitzung vorhanden ist.)

  2. Benutzerdefinierte Daten in der Sitzung speichern und abrufen.

    Nach dem Einrichten einer Sitzung können Sie benutzerdefinierten Daten zur Sitzung hinzufügen und aus der Sitzung abrufen. Das Objekt HttpSession besitzt ähnliche Methoden wie "java.util.Dictionary" zum Hinzufügen, Abrufen und Entfernen von willkürlichen Java-Objekten.

    In Schritt 2 des Codebeispiels liest das Servlet ein Integer-Objekt aus dem Objekt HttpSession, erhöht es und schreibt es zurück. Sie können jeden beliebigen Namen verwenden, um die Werte im HttpSession-Objekt anzugeben. Das Codebeispiel verwendet den Namen sessiontest.counter.

    Da das HttpSession-Objekt von den Servlets, auf die der Benutzer möglicherweise zugreift, gemeinsam verwendet wird, sollten Sie vielleicht für die gesamte Site eine Namenskonvention verwenden, um Konflikte zu vermeiden.

  3. (Optional) Ausgabe einer HTML-Antwortseite mit den Daten des HttpSession-Objekts.
  4. Geben Sie dem Benutzer die Rückmeldung, dass während der Sitzung eine Aktion ausgeführt wurde. Vielleicht möchten Sie HTML-Code an den Client-Browser übergeben, aus dem hervorgeht, dass eine Aktion ausgeführt wurde. In Schritt 3 des Codebeispiels generiert das Servlet eine Webseite, die an den Benutzer zurückgegeben wird, und zeigt immer, wenn der Benutzer im Laufe der Sitzung diese Webseite aufrufe, die Werte des sessiontest.counter an.
  5. (Optional) Listener benachrichtigen. In einer Sitzung gespeicherte Objekte, die die Schnittstelle javax.servlet.http.HttpSessionBindingListener implementieren, werden benachrichtigt, wenn die Sitzung zum Abschluss kommt und ungültig gemacht werden soll. Ausgehend von dieser Nachricht können Sie die Sitzung nachbereiten. Zu dieser Nachbereitung gehört unter anderem das permanente Speichern der Änderungen, die während der Sitzung an einer Datenbank vorgenommen wurden.
  6. Beenden Sie die Sitzung. Sie können eine Session wie folgt beenden:
    • Automatisch mit der Sitzungsverwaltung, wenn eine Sitzung über einen bestimmten Zeitraum inaktiv ist. Administratoren können Ihnen sagen, wie die Zeit angegeben wird, nach der eine Sitzung ungültig gemacht werden soll.
    • Indem Sie das Servlet so codieren, dass es die Methode invalidate() für das Sitzungsobjekt aufruft.

Beispiel

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class SessionSample  extends HttpServlet {
  public void doGet (HttpServletRequest request, HttpServletResponse response)  
       throws ServletException, IOException {
        

   // Schritt 1: Sitzungsobjekt abrufen
 
      boolean create = true;         
      HttpSession session = request.getSession(create);
 
   // Schritt 2: Sitzungsdatenwert abrufen


      Integer ival = (Integer)              
      session.getAttribute ("sessiontest.counter");         
      if (ival == null) ival = new Integer (1);         
      else ival = new Integer (ival.intValue () + 1);           
      session.setAttribute ("sessiontest.counter", ival);       

   // Schritt 3: Seite ausgeben

      response.setContentType("text/html"); 
      PrintWriter out = response.getWriter(); 
      out.println("<html>");  
      out.println("<head><title>Session Tracking Test</title></head>");
      out.println("<body>");
      out.println("<h1>Session Tracking Test</h1>");
      out.println ("You have hit this page " + ival + " times" + "<br>");
      out.println ("Your " + request.getHeader("Cookie"));
      out.println("</body></html>");    
   }
}

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tprs_sesi
Dateiname:tprs_sesi.html