Cookies in JSP mit Beispiel

⚡ Intelligente Zusammenfassung

JSP-Cookies sind kleine Textdateien, die im Client-Browser gespeichert werden und JSP-Anwendungen unterstützen. track-Sessions verwalten, Benutzerpräferenzen speichern und Antworten über mehrere HTTP-Anfragen hinweg mithilfe der javax.servlet.http.Cookie-API und Standard-Antwortheadern personalisieren.

  • 🍪 Definition: JSP-Cookies sind Schlüssel-Wert-Textdateien, die auf dem Clientgerät gespeichert und bei jedem nachfolgenden HTTP-Aufruf über das Anfrageobjekt ausgelesen werden.
  • 🔐 Sicherheitskennzeichen: Durch die Einstellungen Secure, HttpOnly und das moderne SameSite-Attribut werden JSP-Cookies vor Abfangen, Skriptzugriff und Cross-Site-Request-Forgery geschützt.
  • ️ Lebenslange Kontrolle: Die Methode setMaxAge entscheidet, ob ein JSP-Cookie auf der Festplatte gespeichert oder beim Ende der Browsersitzung automatisch gelöscht wird.
  • ✅ Standard-API: Die Klasse javax.servlet.http.Cookie mit response.addCookie und request.getCookies deckt das Erstellen, Übertragen, Abrufen und Löschen von Cookies in Servlet 4.x und 5.x ab.
  • 🧪 Ausgearbeitetes Beispiel: Eine zweiseitige Demo mit Benutzernamen und E-Mail-Adresse zeigt, wie JSP-Cookies erstellt, gesendet, zehn Stunden lang gespeichert und bei der nächsten Anfrage wieder ausgelesen werden.

Cookies in JSP mit Beispiel

Was sind JSP-Cookies?

JSP-Cookies sind kleine Textdateien, die ein JSP-basierter Webserver vom Client-Browser auffordert, auf dem Gerät des Nutzers zu speichern. Da HTTP ein zustandsloses Protokoll ist, bieten JSP-Cookies eine einfache, standardkonforme Möglichkeit, Informationen zwischen Anfragen zu speichern, wie z. B. den Anmeldestatus, die Sprachauswahl, das Design oder den Shop-Zugang.ping Warenkorb-IDs.

  • JSP-Cookies sind einfache Textdateien, die vom Browser auf dem Client-Rechner gespeichert werden.
  • Sie sind gewöhnt an track-Informationen für Sitzungsverwaltung, Personalisierung und Analysen.
  • JSP unterstützt HTTP-Cookies über die zugrundeliegende Servlet-Technologie und die Klasse javax.servlet.http.Cookie.
  • JSP-Cookies sind transmitwird in den HTTP-Anfrage- und Antwortheadern jeder übereinstimmenden Anfrage eingefügt.
  • Wenn der Browser so konfiguriert ist, dass er Cookies akzeptiert, speichert er diese auf der Festplatte bis zum Ablaufdatum, das mit setMaxAge festgelegt wurde.

Warum JSP-Cookies verwenden?

JSP-Entwickler verwenden Cookies, da HTTP-Anfragen voneinander unabhängig sind. Ohne JSP-Cookies wüsste der Server nicht, dass zwei Anfragen vom selben Besucher stammen. Cookies in JSP lösen dieses Problem mit minimalem serverseitigen Zustand.

  • Session tracKönig: Ein JSESSIONID-Cookie verbindet mehrere Seitenaufrufe zu einer logischen Sitzung.
  • Personalisierung: JSP-Cookies können Sprach-, Design- oder Layoutpräferenzen speichern.
  • Authentifizierungshilfsmittel: Remember-Me-Tokens und der Anmeldestatus werden oft in Cookies gespeichert, bei denen die Flags HttpOnly und Secure aktiviert sind.
  • Analytik: Cookies in JSP erfassen wiederkehrende Besucher, Referrer und Conversion-Pfade.

Arten von JSP-Cookies

  1. Dauerhafte Cookies: Ein dauerhafter JSP-Cookie bleibt für die mit `setMaxAge` festgelegte Zeit auf dem Gerät gespeichert. Er hilft der Anwendung, Einstellungen und Anmeldedaten auch nach einem Neustart des Browsers beizubehalten.
  2. Nicht persistenter Cookie: Ein nicht-persistenter JSP-Cookie, auch Session-Cookie genannt, existiert nur im Arbeitsspeicher des Browsers und wird beim Schließen des Browsers gelöscht. Er wird hauptsächlich für kurzlebige Sitzungen verwendet. tracKönig.

JSP-Cookie-Methoden

Die Klasse javax.servlet.http.Cookie stellt die folgenden Methoden bereit, die am häufigsten bei der Arbeit mit JSP-Cookies verwendet werden.

  • public void setDomain(String domain)

    Diese JSP-Set-Cookie-Methode legt die Domain fest, für die das JSP-Cookie gilt.

  • public String getDomain()

    Diese JSP-Get-Cookie-Methode gibt die Domain zurück, für die das JSP-Cookie gilt.

  • public void setMaxAge(int expiry)

    Es legt die maximale Zeit in Sekunden fest, bevor der JSP-Cookie abläuft. Der Wert Null löscht den Cookie, ein negativer Wert macht ihn zu einem Session-Cookie.

  • public int getMaxAge()

    Es gibt das maximale Alter des JSP-Cookies in Sekunden zurück.

  • public String getName()

    Es gibt den Namen des JSP-Cookies zurück.

  • public void setValue(String value)

    Legt den Wert fest, der dem JSP-Cookie zugeordnet ist.

  • public String getValue()

    Gibt den Wert zurück, der dem JSP-Cookie zugeordnet ist.

  • public void setPath(String path)

    Diese Methode zum Setzen eines Cookies in JSP setzt den Cookie. URL Pfad, auf den sich der Cookie bezieht.

  • public String getPath()

    Es gibt die URL Pfad, auf den das JSP-Cookie angewendet wird.

  • public void setSecure(boolean flag)

    Es kennzeichnet den JSP-Cookie so, dass er nur über verschlüsselte HTTPS-Verbindungen gesendet wird.

  • public void setComment(String cmt)

    Es beschreibt den Zweck des JSP-Cookies.

  • public String getComment()

    Es gibt den Kommentar zurück, der den JSP-Cookie beschreibt.

Wie man mit JSP-Cookies umgeht

Die Arbeit mit JSP-Cookies umfasst drei wiederholbare Schritte. Das gleiche Muster wird für den Anmeldestatus, Designwechsel und den Shop verwendet.ping Karren.

  1. Erstellen Sie das JSP-Cookie-Objekt mithilfe des Cookie-Konstruktors.
  2. Konfigurieren Sie die Cookie-Attribute, insbesondere die maximale Gültigkeitsdauer, den Pfad und die Sicherheitsflags.
  3. Senden Sie den Cookie über HTTP-Antwortheader mit Hilfe von response.addCookie an den Browser.

Wie man ein JSP-Cookie erstellt

Ein neues JSP-Cookie wird erstellt, indem javax.servlet.http.Cookie mit einem Namen und einem Wert instanziiert wird. Das Cookie wird dann dem Antwortobjekt hinzugefügt, sodass der Browser es speichert.

Wie man JSP-Cookies liest

Bei jeder nachfolgenden Anfrage sendet der Browser die entsprechenden JSP-Cookies an den Server zurück. Die Seite liest diese Cookies mit der Methode `request.getCookies`, die ein Array von Cookie-Objekten zurückgibt. Anschließend durchläuft die Anwendung das Array, sucht jedes Cookie anhand seines Namens und verwendet dessen Wert.

Wie man einen JSP-Cookie löscht

Um ein JSP-Cookie zu löschen, erstellt der Server ein neues Cookie mit demselben Namen, setzt dessen Wert auf eine leere Zeichenkette, ruft `setMaxAge` mit dem Wert Null auf und fügt es der Antwort hinzu. Der Browser entfernt dann das gespeicherte Cookie in der nächsten Antwort.

Beispiel für Cookies in JSP

In diesem JSP-Cookies-Beispiel erstellt die Anwendung zwei Cookies für Benutzername und E-Mail-Adresse, hält diese zehn Stunden lang aktiv und liest die Werte dann auf einer zweiten Seite namens action_cookie_main.jsp wieder aus.

Action_cookie.jsp

<%-- Action_cookie.jsp: input form for JSP Cookies demo --%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Cookie</title>
</head>
<body>
<form action="action_cookie_main.jsp" method="GET">
Username: <input type="text" name="username">
<br />
Email: <input type="text" name="email" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Action_cookie_main.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%

   Cookie username = new Cookie("username",
 			  request.getParameter("username"));
   Cookie email = new Cookie("email",
			  request.getParameter("email"));


   username.setMaxAge(60*60*10);
   email.setMaxAge(60*60*10);

   // Add both the JSP Cookies in the response header.
   response.addCookie( username );
   response.addCookie( email );
%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Cookie JSP</title>
</head>
<body>

<b>Username:</b>
   <%= request.getParameter("username")%>
<b>Email:</b>
   <%= request.getParameter("email")%>

</body>
</html>

Erklärung der Code

Action_cookie.jsp

Code Zeile 10 bis 15: Die Seite deklariert ein Formular, das an action_cookie_main.jsp übermittelt wird. Zwei Eingabefelder, Benutzername und E-Mail-Adresse, erfassen Daten vom Benutzer, und es gibt eine Schaltfläche zum Absenden.

Action_cookie_main.jsp

Code Zeile 6 bis 9: Es werden zwei Cookie-Objekte, username und email, mithilfe von request.getParameter erstellt, um die vom Formular übermittelten Werte auszulesen.

Code Zeile 12 bis 13: Die Methode setMaxAge wird mit 60 multipliziert mit 60 multipliziert mit 10 aufgerufen, wodurch die Lebensdauer jedes JSP-Cookies auf zehn Stunden festgelegt wird.

Code Zeile 16 bis 17: Die beiden Cookies werden mit response.addCookie an die Antwort angehängt. Der Browser sendet sie dann bei nachfolgenden Anfragen zurück, und der Server liest sie mit request.getCookies oder request.getParameter für die aktuelle Anfrage.

Ausgang

Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe.

JSP-Cookie-Methoden

JSP-Cookie-Methoden

Beim Ausführen von action_cookie.jsp zeigt der Browser die beiden Felder Benutzername und E-Mail-Adresse an. Nachdem der Benutzer diese ausgefüllt und auf „Absenden“ geklickt hat, erstellt action_cookie_main.jsp die entsprechenden JSP-Cookies auf dem Server, speichert sie auf dem Client und zeigt die Werte an, um die erfolgreiche Erstellung der Cookies zu bestätigen.

Best Practices für JSP-Cookies

Moderne Webanwendungen sollten JSP-Cookies als sicherheitsrelevante Daten behandeln. Die folgenden Vorgehensweisen entsprechen den aktuellen Servlet 4.x- und Servlet 5.x-Implementierungen.

  • Verwenden Sie HttpOnly: Authentifizierungs-Cookies sollten als HttpOnly gekennzeichnet werden, damit clientseitige Skripte sie nicht lesen können.
  • Sicher verwenden: Cookies werden nur über HTTPS gesendet, indem setSecure(true) aufgerufen wird.
  • SameSite verwenden: Konfigurieren Sie das SameSite-Attribut (Lax oder Strict) über die Container- oder Antwortheader, um Cross-Site-Request-Forgery zu verhindern.
  • Werte klein halten: Speichern Sie eine Kennung im Cookie und speichern Sie die Daten serverseitig.
  • Explizites Ablaufdatum festlegen: Verwenden Sie setMaxAge, um ein vorhersehbares Verhalten in allen Browsern zu gewährleisten.

Häufig gestellte Fragen

JSP-Cookies sind kleine Textdateien, die Daten im Client-Browser speichern. JSP-Seiten verwenden sie für die Sitzungsverwaltung. tracking, speichert Benutzereinstellungen, unterstützt den Anmeldestatus und ermöglicht Analysen über mehrere HTTP-Anfragen an dieselbe Webanwendung hinweg.

Markieren Sie Cookies als HttpOnly, damit Skripte sie nicht lesen können, rufen Sie setSecure(true) auf, damit sie nur über HTTPS übertragen werden, und konfigurieren Sie das SameSite-Attribut als Lax oder Strict, um das Risiko von Cross-Site-Request-Forgery in modernen Browsern zu reduzieren.

Erstelle einen neuen Cookie mit demselben Namen und Pfad, setze seinen Wert auf einen leeren String, rufe `setMaxAge(0)` auf und füge ihn mit `response.addCookie` zur Antwort hinzu. Der Browser entfernt dann sofort den entsprechenden gespeicherten Cookie.

Ein persistenter JSP-Cookie hat eine positive maximale Gültigkeitsdauer und wird bis zu deren Ablauf auf der Festplatte gespeichert. Ein Session-Cookie hat eine negative maximale Gültigkeitsdauer, verbleibt nur im Arbeitsspeicher des Browsers und wird beim Schließen des Browserfensters gelöscht.

KI-gestützte Analysen können den Cookie-Verkehr in Echtzeit auswerten, gestohlene Sitzungs-IDs kennzeichnen, ungewöhnliche Standortänderungen erkennen und eine verstärkte Authentifizierung auslösen. Modelle des maschinellen Lernens helfen zudem, SameSite-, HttpOnly- und Secure-Richtlinien anhand beobachteter Angriffsmuster zu optimieren.

Ja. KI-Assistenten können älteren JSP- und Servlet-Code scannen, javax.servlet.http.Cookie-Aufrufe in Servlet 5.x durch jakarta.servlet.http.Cookie ersetzen, SameSite- und HttpOnly-Flags hinzufügen und eine sicherere Speicherung von Sitzungsbezeichnern vorschlagen, ohne die bestehende Anwendungslogik zu beeinträchtigen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: