Informasjonskapsler i JSP med eksempel

โšก Smart oppsummering

JSP-informasjonskapsler er smรฅ tekstfiler som er lagret i klientens nettleser og som hjelper JSP-applikasjoner track-รธkter, huske brukerpreferanser og tilpasse svar pรฅ tvers av flere HTTP-forespรธrsler ved hjelp av javax.servlet.http.Cookie API og standard svaroverskrifter.

  • ๐Ÿช Definisjon: JSP-informasjonskapsler er tekstfiler med nรธkkelverdi som lagres pรฅ klientenheten og leses gjennom forespรธrselsobjektet ved hvert pรฅfรธlgende HTTP-kall.
  • ๐Ÿ” Sikkerhetsflagg: ร… sette Secure, HttpOnly og det moderne SameSite-attributtet beskytter JSP-informasjonskapsler mot avlytting, skripttilgang og forfalskning av forespรธrsler pรฅ tvers av nettsteder.
  • ๏ธ Livstidskontroll: Metoden setMaxAge avgjรธr om en JSP-informasjonskapsel er permanent pรฅ disken eller fjernes automatisk nรฅr nettleserรธkten avsluttes.
  • โœ… Standard API: javax.servlet.http.Cookie-klassen med response.addCookie og request.getCookies dekker opprettelse, overfรธring, henting og sletting i Servlet 4.x og 5.x.
  • ๐Ÿงช Utarbeidet eksempel: En demonstrasjon av brukernavn og e-post pรฅ to sider viser hvordan JSP-informasjonskapsler opprettes, sendes, lagres i ti timer og leses tilbake ved neste forespรธrsel.

Informasjonskapsler i JSP med eksempel

Hva er JSP-informasjonskapsler?

JSP-informasjonskapsler er smรฅ tekstfiler som en JSP-basert webserver ber klientnettleseren om รฅ lagre pรฅ brukerens enhet. Fordi HTTP er en tilstandslรธs protokoll, gir JSP-informasjonskapsler en enkel, standardbasert mรฅte รฅ huske informasjon mellom forespรธrsler, for eksempel pรฅloggingsstatus, sprรฅkvalg, tema eller nettbutikk.ping handlekurvidentifikatorer.

  • JSP-informasjonskapsler er rene tekstfiler som lagres pรฅ klientmaskinen av nettleseren.
  • De er vant til track-informasjon for รธktadministrasjon, personalisering og analyser.
  • JSP stรธtter HTTP-informasjonskapsler gjennom den underliggende Servlet-teknologien og javax.servlet.http.Cookie-klassen.
  • JSP-informasjonskapsler er transmitinne i HTTP-forespรธrsels- og svaroverskrifter pรฅ hver samsvarende forespรธrsel.
  • Nรฅr nettleseren er konfigurert til รฅ godta informasjonskapsler, lagrer den dem pรฅ disk frem til utlรธpsdatoen som er angitt av setMaxAge.

Hvorfor bruke JSP-informasjonskapsler?

JSP-utviklere er avhengige av informasjonskapsler fordi HTTP-forespรธrsler er uavhengige av hverandre. Uten JSP-informasjonskapsler ville ikke serveren vite at to forespรธrsler tilhรธrer den samme besรธkende. Informasjonskapsler i JSP lรธser dette problemet med minimal serversidetilstand.

  • Session trackonge: En JSESSIONID-informasjonskapsel kobler flere sidevisninger til รฉn logisk รธkt.
  • Personalisering: JSP-informasjonskapsler kan lagre sprรฅk-, tema- eller layoutpreferanser.
  • Autentiseringshjelpere: Husk meg-tokener og pรฅloggingsstatus ligger ofte i informasjonskapsler med HttpOnly- og Secure-flaggene aktivert.
  • Analytics: Informasjonskapsler i JSP registrerer returnerende besรธkende, henvisende brukere og konverteringsbaner.

Typer JSP-informasjonskapsler

  1. Vedvarende informasjonskapsel: En permanent JSP-informasjonskapsel lagres pรฅ enheten i tiden som er angitt med setMaxAge. Den hjelper applikasjonen med รฅ huske preferanser og innloggingsdetaljer ved omstart av nettleseren.
  2. Ikke-permanent informasjonskapsel: En ikke-permanent JSP-informasjonskapsel, ogsรฅ kalt en รธktinformasjonskapsel, ligger kun i nettleserens minne og fjernes nรฅr brukeren lukker nettleseren. Den brukes hovedsakelig til kortvarige รธkter. trackonge.

JSP-informasjonskapsler-metoder

javax.servlet.http.Cookie-klassen eksponerer fรธlgende metoder som brukes oftest nรฅr man arbeider med JSP-informasjonskapsler.

  • public void setDomain(String domain)

    Denne JSP-metoden for รฅ sette informasjonskapsler angir domenet som JSP-informasjonskapselen gjelder for.

  • offentlig String getDomain()

    Denne JSP get cookie-metoden returnerer domenet som JSP-informasjonskapselen gjelder for.

  • public void setMaxAge(int utlรธpsdato)

    Den angir maksimal tid i sekunder fรธr JSP-informasjonskapselen utlรธper. En verdi pรฅ null sletter informasjonskapselen, og en negativ verdi gjรธr den til en รธktinformasjonskapsel.

  • public int hentMaxAge()

    Den returnerer den maksimale alderen til JSP-informasjonskapselen i sekunder.

  • public String getName()

    Den returnerer navnet pรฅ JSP-informasjonskapselen.

  • public void setValue(String-verdi)

    Angir verdien som er knyttet til JSP-informasjonskapselen.

  • offentlig String getValue()

    Returnerer verdien som er knyttet til JSP-informasjonskapselen.

  • public void setPath(String path)

    Denne informasjonskapselen i JSP-metoden angir URL banen som informasjonskapselen gjelder for.

  • offentlig String getPath()

    Den returnerer URL banen som JSP-informasjonskapselen gjelder for.

  • public void setSecure(boolsk flagg)

    Den markerer JSP-informasjonskapselen slik at den bare sendes over krypterte HTTPS-tilkoblinger.

  • public void setKommentar(String cmt)

    Den beskriver formรฅlet med JSP-informasjonskapselen.

  • offentlig String getComment()

    Den returnerer kommentaren som beskriver JSP-informasjonskapselen.

Slik hรฅndterer du JSP-informasjonskapsler

ร… jobbe med JSP-informasjonskapsler innebรฆrer tre repeterbare trinn. Det samme mรธnsteret brukes for innloggingsstatus, temabytter og nettbutikk.ping vogner.

  1. Opprett JSP Cookie-objektet ved hjelp av Cookie-konstruktรธren.
  2. Konfigurer informasjonskapselattributtene, spesielt maksimal alder, sti og sikkerhetsflagg.
  3. Send informasjonskapselen til nettleseren via HTTP-svarhoder ved hjelp av response.addCookie.

Slik oppretter du en JSP-informasjonskapsel

En ny JSP-informasjonskapsel opprettes ved รฅ instansiere javax.servlet.http.Cookie med et navn og en verdi. Informasjonskapselen legges deretter til responsobjektet slik at nettleseren lagrer den.

Slik leser du JSP-informasjonskapsler

Pรฅ hver pรฅfรธlgende forespรธrsel sender nettleseren samsvarende JSP-informasjonskapsler tilbake til serveren. Siden leser dem ved รฅ kalle request.getCookies, som returnerer en matrise med informasjonskapselobjekter. Applikasjonen itererer deretter over matrisen, slรฅr opp hver informasjonskapsel etter navn og bruker verdien.

Slik sletter du en JSP-informasjonskapsel

For รฅ slette en JSP-informasjonskapsel, oppretter serveren en ny informasjonskapsel med samme navn, setter verdien til en tom streng, kaller setMaxAge med null og legger den til i svaret. Nettleseren fjerner deretter den lagrede informasjonskapselen i neste svar.

Eksempel pรฅ informasjonskapsler i JSP

I dette eksemplet med JSP-informasjonskapsler oppretter applikasjonen to informasjonskapsler for brukernavn og e-post, holder dem aktive i ti timer og leser deretter verdiene tilbake pรฅ en annen side kalt 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>

Forklaring av Code

Action_cookie.jsp

Code Linje 10 til 15: Siden deklarerer et skjema som sendes til action_cookie_main.jsp. To inndatafelt, brukernavn og e-post, samler inn data fra brukeren sammen med en send-knapp.

Action_cookie_main.jsp

Code Linje 6 til 9: To informasjonskapselobjekter, brukernavn og e-post, opprettes ved hjelp av request.getParameter for รฅ lese verdiene som sendes inn av skjemaet.

Code Linje 12 til 13: setMaxAge-metoden kalles med 60 multiplisert med 60 multiplisert med 10, som setter levetiden til hver JSP-informasjonskapsel til ti timer.

Code Linje 16 til 17: De to informasjonskapslene er knyttet til svaret med response.addCookie. Nettleseren sender dem deretter tilbake ved senere forespรธrsler, og serveren leser dem ved hjelp av request.getCookies eller request.getParameter for den gjeldende forespรธrselen.

Produksjon

Nรฅr du kjรธrer koden ovenfor, fรฅr du fรธlgende utdata.

JSP-informasjonskapsler-metoder

JSP-informasjonskapsler-metoder

Nรฅr action_cookie.jsp kjรธres, viser nettleseren de to feltene, brukernavn og e-post. Etter at brukeren har fylt dem ut og klikket pรฅ Send, oppretter action_cookie_main.jsp de samsvarende JSP-informasjonskapslene pรฅ serveren, lagrer dem pรฅ klienten og viser verdiene, som bekrefter at informasjonskapslene ble opprettet.

Beste praksis for JSP-informasjonskapsler

Moderne webapplikasjoner bรธr behandle JSP-informasjonskapsler som sikkerhetssensitive data. Fรธlgende praksis er i samsvar med gjeldende Servlet 4.x- og Servlet 5.x-distribusjoner.

  • Bruk bare Http: Merk autentiseringskapsler som HttpOnly slik at klientsideskript ikke kan lese dem.
  • Bruk sikker: Send informasjonskapsler kun over HTTPS ved รฅ kalle setSecure(true).
  • Bruk SameSite: Konfigurer SameSite-attributtet (Lax eller Strict) gjennom container- eller svarhodene for รฅ redusere forfalskning av forespรธrsler pรฅ tvers av nettsteder.
  • Hold verdiene smรฅ: Lagre en identifikator i informasjonskapselen og oppbevar dataene i lagring pรฅ serversiden.
  • Angi eksplisitt utlรธp: Bruk setMaxAge for forutsigbar oppfรธrsel pรฅ tvers av nettlesere.

Spรธrsmรฅl og svar

JSP-informasjonskapsler er smรฅ tekstfiler som lagrer data i klientens nettleser. JSP-sider bruker dem til รธkter trackonge, husker brukerpreferanser, stรธtter pรฅloggingsstatus og driver analyser pรฅ tvers av flere HTTP-forespรธrsler til samme webapplikasjon.

Merk informasjonskapsler som HttpOnly slik at skript ikke kan lese dem, kall setSecure(true) slik at de bare gรฅr over HTTPS, og konfigurer SameSite-attributtet som Lax eller Strict for รฅ redusere risikoen for forfalskning av forespรธrsler pรฅ tvers av nettsteder i moderne nettlesere.

Opprett en ny informasjonskapsel med samme navn og sti, sett verdien til en tom streng, kall setMaxAge(0), og legg den til i svaret med response.addCookie. Nettleseren fjerner deretter den samsvarende lagrede informasjonskapselen umiddelbart.

En permanent JSP-informasjonskapsel har en positiv maksimumsalder og lagres pรฅ disken til den tiden utlรธper. En รธktinformasjonskapsel har en negativ maksimumsalder, lagres kun i nettleserens minne og fjernes nรฅr nettleservinduet lukkes.

AI-drevet analyse kan score informasjonskapseltrafikk i sanntid, flagge stjรฅlne รธktidentifikatorer, oppdage uvanlige geolokasjonshopp og utlรธse trinnvis autentisering. Maskinlรฆringsmodeller hjelper ogsรฅ med รฅ finjustere SameSite-, HttpOnly- og Secure-policyer basert pรฅ observerte angrepsmรธnstre.

Ja. AI-assistenter kan skanne eldre JSP- og Servlet-kode, omskrive javax.servlet.http.Cookie-kall for jakarta.servlet.http.Cookie i Servlet 5.x, legge til SameSite- og HttpOnly-flagg og foreslรฅ tryggere lagring av รธktidentifikatorer uten รฅ bryte eksisterende applikasjonslogikk.

Oppsummer dette innlegget med: