Cookies i JSP med eksempel
⚡ Smart opsummering
JSP-cookies er små tekstfiler, der gemmes i klientbrowseren, og som hjælper JSP-applikationer track-sessioner, husk brugerpræferencer og personliggør svar på tværs af flere HTTP-anmodninger ved hjælp af javax.servlet.http.Cookie API'en og standardsvarheadere.

Hvad er JSP-cookies?
JSP-cookies er små tekstfiler, som en JSP-baseret webserver beder klientbrowseren om at gemme på brugerens enhed. Fordi HTTP er en statsløs protokol, giver JSP-cookies en simpel, standardbaseret måde at huske oplysninger mellem anmodninger, såsom loginstatus, sprogvalg, tema eller butik.ping indkøbskurvsidentifikatorer.
- JSP-cookies er almindelige tekstfiler, der gemmes på klientmaskinen af browseren.
- De er vant til track-oplysninger til sessionsstyring, personalisering og analyser.
- JSP understøtter HTTP-cookies via den underliggende Servlet-teknologi og javax.servlet.http.Cookie-klassen.
- JSP-cookies er transmitted i HTTP-anmodnings- og svarheadere på hver matchende anmodning.
- Når browseren er konfigureret til at acceptere cookies, gemmer den dem på disken indtil den udløbsdato, der er angivet af setMaxAge.
Hvorfor bruge JSP-cookies?
JSP-udviklere er afhængige af cookies, fordi HTTP-anmodninger er uafhængige af hinanden. Uden JSP-cookies ville serveren ikke vide, at to anmodninger tilhører den samme besøgende. Cookies i JSP løser dette problem med minimal server-side state.
- Session trackonge: En JSESSIONID-cookie forbinder flere sidevisninger til én logisk session.
- Tilpasning: JSP-cookies kan gemme sprog-, tema- eller layoutpræferencer.
- Godkendelseshjælpere: Husk mig-tokens og loginstatus findes ofte i cookies med HttpOnly- og Secure-flagene aktiveret.
- Analytics: Cookies i JSP registrerer tilbagevendende besøgende, henvisninger og konverteringsstier.
Typer af JSP-cookies
- Vedvarende cookie: En permanent JSP-cookie forbliver gemt på enheden i det tidsrum, der er angivet med setMaxAge. Den hjælper applikationen med at huske præferencer og loginoplysninger, når browseren genstartes.
- Ikke-persistent cookie: En ikke-persistent JSP-cookie, også kaldet en sessionscookie, findes kun i browserens hukommelse og fjernes, når brugeren lukker browseren. Den bruges mest til kortvarige sessionscookies. trackonge.
JSP Cookies metoder
javax.servlet.http.Cookie-klassen viser følgende metoder, der oftest bruges, når man arbejder med JSP-cookies.
-
public void setDomain(String domæne)
Denne JSP set cookie-metode angiver det domæne, som JSP-cookien gælder for.
-
offentlig String getDomain()
Denne JSP get cookie-metode returnerer det domæne, som JSP-cookien gælder for.
-
public void sætMaxAge(int udløb)
Den angiver den maksimale tid i sekunder, før JSP-cookien udløber. En værdi på nul sletter cookien, og en negativ værdi gør den til en sessionscookie.
-
public int getMaxAge()
Den returnerer JSP-cookiens maksimale alder i sekunder.
-
public String getName()
Den returnerer navnet på JSP-cookien.
-
public void sætVærdi(Stringværdi)
Angiver den værdi, der er knyttet til JSP-cookien.
-
offentlig String getVærdi()
Returnerer den værdi, der er knyttet til JSP-cookien.
-
public void setPath(String sti)
Denne sæt cookie i JSP-metoden sætter URL sti, som cookien gælder for.
-
offentlig String getPath()
Den returnerer URL sti, som JSP-cookien gælder for.
-
public void setSecure(boolsk flag)
Den markerer JSP-cookien, så den kun sendes via krypterede HTTPS-forbindelser.
-
public void sætKommentar(String cmt)
Den beskriver formålet med JSP-cookien.
-
offentlig String getComment()
Den returnerer kommentaren, der beskriver JSP-cookien.
Sådan håndterer du JSP-cookies
At arbejde med JSP-cookies involverer tre gentagne trin. Det samme mønster bruges til loginstatus, temaskift og butik.ping vogne.
- Opret JSP Cookie-objektet ved hjælp af Cookie-konstruktøren.
- Konfigurer cookieattributterne, især den maksimale alder, sti og sikkerhedsflag.
- Send cookien til browseren via HTTP-svarheadere ved hjælp af response.addCookie.
Sådan opretter du en JSP-cookie
En ny JSP-cookie oprettes ved at instantiere javax.servlet.http.Cookie med et navn og en værdi. Cookien knyttes derefter til responsobjektet, så browseren gemmer den.
Sådan læser du JSP-cookies
Ved hver efterfølgende anmodning sender browseren matchende JSP-cookies tilbage til serveren. Siden læser dem ved at kalde request.getCookies, som returnerer et array af Cookie-objekter. Applikationen itererer derefter over arrayet, slår hver cookie op ved navn og bruger dens værdi.
Sådan sletter du en JSP-cookie
For at slette en JSP-cookie opretter serveren en ny cookie med samme navn, sætter dens værdi til en tom streng, kalder setMaxAge med nul og tilføjer den til svaret. Browseren fjerner derefter den gemte cookie i det næste svar.
Eksempel på cookies i JSP
I dette eksempel på JSP Cookies opretter applikationen to cookies til brugernavn og e-mail, holder dem aktive i ti timer og læser derefter værdierne tilbage på en anden side kaldet 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 af Code
Action_cookie.jsp
Code Linje 10 til 15: Siden deklarerer en formular, der sendes til action_cookie_main.jsp. To inputfelter, brugernavn og e-mail, indsamler data fra brugeren sammen med en send-knap.
Action_cookie_main.jsp
Code Linje 6 til 9: To cookie-objekter, brugernavn og e-mail, oprettes ved hjælp af request.getParameter til at læse de værdier, der indsendes af formularen.
Code Linje 12 til 13: Metoden setMaxAge kaldes med 60 ganget med 60 ganget med 10, hvilket sætter levetiden for hver JSP-cookie til ti timer.
Code Linje 16 til 17: De to cookies er knyttet til svaret med response.addCookie. Browseren sender dem derefter tilbage ved efterfølgende anmodninger, og serveren læser dem ved hjælp af request.getCookies eller request.getParameter for den aktuelle anmodning.
Produktion
Når du udfører ovenstående kode, får du følgende output.
Når action_cookie.jsp udføres, viser browseren de to felter, brugernavn og e-mail. Når brugeren har udfyldt dem og klikket på Send, opretter action_cookie_main.jsp de matchende JSP-cookies på serveren, gemmer dem på klienten og viser værdierne, hvilket bekræfter, at cookierne blev oprettet.
Bedste Practices for JSP Cookies
Moderne webapplikationer bør behandle JSP-cookies som sikkerhedsfølsomme data. Følgende praksisser er i overensstemmelse med nuværende Servlet 4.x- og Servlet 5.x-implementeringer.
- Brug Kun Http: Markér godkendelsescookies som HttpOnly, så klientsidescripts ikke kan læse dem.
- Brug Sikkerhed: Send kun cookies via HTTPS ved at kalde setSecure(true).
- Brug SameSite: Konfigurer SameSite-attributten (Lax eller Strict) via container- eller svarheaderne for at mindske forfalskning af anmodninger på tværs af websteder.
- Hold værdierne små: Gem en identifikator i cookien, og opbevar dataene i serverens lagring.
- Angiv eksplicit udløb: Brug setMaxAge for forudsigelig adfærd på tværs af browsere.


