Cookies in JSP met voorbeeld

⚡ Slimme samenvatting

JSP-cookies zijn kleine tekstbestanden die in de browser van de gebruiker worden opgeslagen en die JSP-applicaties helpen. track sessies, gebruikersvoorkeuren onthouden en reacties personaliseren over meerdere HTTP-verzoeken met behulp van de javax.servlet.http.Cookie API en standaard responsheaders.

  • 🍪 Definitie: JSP-cookies zijn tekstbestanden met sleutel-waardeparen die op het apparaat van de client worden opgeslagen en bij elke volgende HTTP-aanroep via het aanvraagobject worden uitgelezen.
  • 🔐 Beveiligingsvlaggen: Door de instellingen Secure, HttpOnly en het moderne SameSite-attribuut te gebruiken, worden JSP-cookies beschermd tegen onderschepping, scripttoegang en cross-site request forgery.
  • ​ Levenslange controle: De setMaxAge-methode bepaalt of een JSP-cookie permanent op de schijf wordt opgeslagen of automatisch wordt verwijderd wanneer de browsersessie eindigt.
  • ✅ Standaard-API: De klasse javax.servlet.http.Cookie met response.addCookie en request.getCookies behandelt het aanmaken, verzenden, ophalen en verwijderen van cookies in Servlet 4.x en 5.x.
  • 🧪 Uitgewerkt voorbeeld: Een demo van twee pagina's over gebruikersnamen en e-mailadressen laat zien hoe JSP-cookies worden aangemaakt, verzonden, tien uur lang bewaard en bij het volgende verzoek weer worden uitgelezen.

Cookies in JSP met voorbeeld

Wat zijn JSP-cookies?

JSP-cookies zijn kleine tekstbestanden die een op JSP gebaseerde webserver aan de clientbrowser vraagt ​​om op het apparaat van de gebruiker op te slaan. Omdat HTTP een stateless protocol is, bieden JSP-cookies een eenvoudige, op standaarden gebaseerde manier om informatie tussen verzoeken te onthouden, zoals de inlogstatus, taalvoorkeur, thema of winkel.ping winkelwagen-identificaties.

  • JSP-cookies zijn platte tekstbestanden die door de browser op de computer van de gebruiker worden opgeslagen.
  • Ze zijn gewend om track-informatie voor sessiebeheer, personalisatie en analyses.
  • JSP ondersteunt HTTP-cookies via de onderliggende Servlet-technologie en de klasse javax.servlet.http.Cookie.
  • JSP-cookies zijn transmitted in de HTTP-verzoek- en antwoordheaders van elk overeenkomend verzoek.
  • Wanneer de browser is geconfigureerd om cookies te accepteren, worden deze op de schijf opgeslagen tot de vervaldatum die is ingesteld met setMaxAge.

Waarom JSP-cookies gebruiken?

JSP-ontwikkelaars vertrouwen op cookies omdat HTTP-verzoeken onafhankelijk van elkaar zijn. Zonder JSP-cookies zou de server niet weten dat twee verzoeken van dezelfde bezoeker afkomstig zijn. Cookies in JSP lossen dit probleem op met minimale server-side state.

  • Sessie trackoning: Een JSESSIONID-cookie koppelt meerdere paginaweergaven aan één logische sessie.
  • Personalisatie: JSP-cookies kunnen taal-, thema- of lay-outvoorkeuren opslaan.
  • Authenticatiehulpmiddelen: Onthoud mij-tokens en de inlogstatus worden vaak opgeslagen in cookies met de vlaggen HttpOnly en Secure ingeschakeld.
  • Analytics: Cookies in JSP registreren terugkerende bezoekers, verwijzende websites en conversiepaden.

Soorten JSP-cookies

  1. Blijvende cookie: Een permanente JSP-cookie blijft op het apparaat opgeslagen gedurende de tijd die is ingesteld met setMaxAge. Hierdoor kan de applicatie voorkeuren en inloggegevens onthouden, ook na het opnieuw opstarten van de browser.
  2. Niet-permanente cookie: Een niet-permanente JSP-cookie, ook wel sessiecookie genoemd, blijft alleen in het geheugen van de browser bestaan ​​en wordt verwijderd wanneer de gebruiker de browser sluit. Deze wordt meestal gebruikt voor kortdurende sessies. trackoning.

JSP-cookiemethoden

De klasse javax.servlet.http.Cookie biedt de volgende methoden, die het meest worden gebruikt bij het werken met JSP-cookies.

  • public void setDomain(String domain)

    Deze JSP-methode voor het instellen van cookies bepaalt het domein waarop de JSP-cookie van toepassing is.

  • public String getDomain()

    Deze JSP get cookie-methode retourneert het domein waarop de JSP-cookie van toepassing is.

  • public void setMaxAge(int expiry)

    Hiermee wordt de maximale tijd in seconden ingesteld voordat de JSP-cookie verloopt. Een waarde van nul verwijdert de cookie en een negatieve waarde maakt er een sessiecookie van.

  • public int getMaxAge()

    Het geeft de maximale leeftijd van de JSP-cookie in seconden weer.

  • public String getName()

    Het retourneert de naam van de JSP-cookie.

  • public void setValue(String value)

    Stelt de waarde in die is gekoppeld aan de JSP-cookie.

  • public String getValue()

    Retourneert de waarde die is gekoppeld aan de JSP-cookie.

  • public void setPath(String path)

    Deze methode voor het instellen van cookies in JSP stelt de URL pad waarop de cookie van toepassing is.

  • public String getPath()

    Het geeft de terug URL pad waarop de JSP-cookie van toepassing is.

  • public void setSecure(boolean flag)

    Het markeert de JSP-cookie zodat deze alleen via versleutelde HTTPS-verbindingen wordt verzonden.

  • public void setComment(String cmt)

    Het beschrijft het doel van de JSP-cookie.

  • public String getComment()

    Het retourneert de opmerking die de JSP-cookie beschrijft.

Hoe om te gaan met JSP-cookies

Het werken met JSP-cookies omvat drie herhaalbare stappen. Hetzelfde patroon wordt gebruikt voor de inlogstatus, themawisselingen en de webshop.ping karren.

  1. Maak het JSP Cookie-object aan met behulp van de Cookie-constructor.
  2. Configureer de cookie-eigenschappen, met name de maximale geldigheidsduur, het pad en de beveiligingsvlaggen.
  3. Verzend de cookie naar de browser via HTTP-antwoordheaders met behulp van response.addCookie.

Hoe maak je een JSP-cookie aan?

Een nieuwe JSP-cookie wordt aangemaakt door een instantie van javax.servlet.http.Cookie te maken met een naam en een waarde. De cookie wordt vervolgens aan het response-object toegevoegd, zodat de browser deze kan opslaan.

Hoe lees je JSP-cookies?

Bij elk volgend verzoek stuurt de browser overeenkomende JSP-cookies terug naar de server. De pagina leest deze cookies door de functie `request.getCookies` aan te roepen, die een array met cookie-objecten retourneert. De applicatie doorloopt vervolgens de array, zoekt elke cookie op naam op en gebruikt de bijbehorende waarde.

Hoe verwijder ik een JSP-cookie?

Om een ​​JSP-cookie te verwijderen, maakt de server een nieuwe cookie met dezelfde naam aan, stelt de waarde ervan in op een lege tekenreeks, roept setMaxAge aan met nul en voegt deze toe aan het antwoord. De browser verwijdert vervolgens de opgeslagen cookie bij het volgende antwoord.

Voorbeeld van cookies in JSP

In dit JSP-cookievoorbeeld maakt de applicatie twee cookies aan voor gebruikersnaam en e-mailadres, bewaart deze tien uur lang en leest vervolgens de waarden uit op een tweede pagina genaamd action_cookie_main.jsp.

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>

Uitleg van de Code

Action_cookie.jsp

Code Regel 10 tot en met 15: De pagina declareert een formulier dat wordt verzonden naar action_cookie_main.jsp. Twee invoervelden, gebruikersnaam en e-mailadres, verzamelen gegevens van de gebruiker, samen met een verzendknop.

Action_cookie_main.jsp

Code Regel 6 tot en met 9: Met behulp van `request.getParameter` worden twee cookie-objecten aangemaakt, `username` en `email`, om de waarden uit het formulier te lezen.

Code Regel 12 tot en met 13: De methode setMaxAge wordt aangeroepen met 60 vermenigvuldigd met 60 vermenigvuldigd met 10, waardoor de levensduur van elke JSP-cookie op tien uur wordt ingesteld.

Code Regel 16 tot en met 17: De twee cookies worden aan het antwoord toegevoegd met response.addCookie. De browser stuurt ze vervolgens mee met volgende verzoeken, en de server leest ze uit met request.getCookies of request.getParameter voor het huidige verzoek.

uitgang

Wanneer je de bovenstaande code uitvoert, krijg je de volgende uitvoer.

JSP-cookiemethoden

JSP-cookiemethoden

Wanneer action_cookie.jsp wordt uitgevoerd, toont de browser de twee velden, gebruikersnaam en e-mailadres. Nadat de gebruiker deze heeft ingevuld en op 'Verzenden' klikt, maakt action_cookie_main.jsp de bijbehorende JSP-cookies aan op de server, slaat deze op aan de clientzijde en toont de waarden, waarmee wordt bevestigd dat de cookies succesvol zijn aangemaakt.

Aanbevolen werkwijzen voor JSP-cookies

Moderne webapplicaties zouden JSP-cookies als beveiligingsgevoelige gegevens moeten behandelen. De volgende werkwijzen sluiten aan bij de huidige implementaties van Servlet 4.x en Servlet 5.x.

  • Gebruik HttpOnly: Markeer authenticatiecookies als HttpOnly zodat client-side scripts ze niet kunnen lezen.
  • Gebruik Secure: Verzend cookies alleen via HTTPS door setSecure(true) aan te roepen.
  • Gebruik SameSite: Configureer het SameSite-attribuut (Lax of Strict) via de container of de responseheaders om cross-site request forgery te voorkomen.
  • Houd de waarden klein: Sla een identificatiecode op in de cookie en bewaar de gegevens in de serveropslag.
  • Stel een expliciete vervaldatum in: Gebruik setMaxAge voor voorspelbaar gedrag in verschillende browsers.

Veelgestelde vragen

JSP-cookies zijn kleine tekstbestanden die gegevens opslaan in de browser van de gebruiker. JSP-pagina's gebruiken ze voor sessiebeheer. tracKing, die gebruikersvoorkeuren onthoudt, de inlogstatus ondersteunt en analyses mogelijk maakt voor meerdere HTTP-verzoeken aan dezelfde webapplicatie.

Markeer cookies als HttpOnly zodat scripts ze niet kunnen lezen, roep setSecure(true) aan zodat ze alleen via HTTPS worden verzonden, en configureer het SameSite-attribuut als Lax of Strict om het risico op cross-site request forgery in moderne browsers te verminderen.

Maak een nieuwe cookie aan met dezelfde naam en hetzelfde pad, stel de waarde ervan in op een lege tekenreeks, roep setMaxAge(0) aan en voeg deze toe aan het antwoord met response.addCookie. De browser verwijdert vervolgens de bijbehorende opgeslagen cookie onmiddellijk.

Een permanente JSP-cookie heeft een positieve maximale geldigheidsduur en wordt op de schijf opgeslagen totdat die tijd is verstreken. Een sessiecookie heeft een negatieve maximale geldigheidsduur, blijft alleen in het geheugen van de browser bestaan ​​en wordt verwijderd wanneer het browservenster wordt gesloten.

AI-gestuurde analyses kunnen cookieverkeer in realtime beoordelen, gestolen sessie-ID's signaleren, ongebruikelijke geolocatiesprongen detecteren en extra authenticatie activeren. Machine learning-modellen helpen ook bij het afstemmen van SameSite-, HttpOnly- en Secure-beleid op basis van waargenomen aanvalspatronen.

Ja. AI-assistenten kunnen verouderde JSP- en Servlet-code scannen, javax.servlet.http.Cookie-aanroepen herschrijven naar jakarta.servlet.http.Cookie in Servlet 5.x, SameSite- en HttpOnly-vlaggen toevoegen en suggesties doen voor een veiligere opslag van sessie-ID's zonder de bestaande applicatielogica te verstoren.

Vat dit bericht samen met: