Kolačići u JSP-u s primjerom
⚡ Pametni sažetak
JSP kolačići su male tekstualne datoteke pohranjene u pregledniku klijenta koje pomažu JSP aplikacijama track sesija, pamte korisničke postavke i personaliziraju odgovore na više HTTP zahtjeva pomoću javax.servlet.http.Cookie API-ja i standardnih zaglavlja odgovora.

Što su JSP kolačići?
JSP kolačići su male tekstualne datoteke koje web poslužitelj temeljen na JSP-u traži od klijentskog preglednika da ih pohrani na korisničkom uređaju. Budući da je HTTP protokol bez stanja, JSP kolačići pružaju jednostavan, standardiziran način pamćenja informacija između zahtjeva, kao što su stanje prijave, odabir jezika, tema ili trgovina.ping identifikatori košarice.
- JSP kolačići su obične tekstualne datoteke koje preglednik pohranjuje na klijentskom računalu.
- Navikli su se track informacije za upravljanje sesijama, personalizaciju i analitiku.
- JSP podržava HTTP kolačiće putem temeljne Servlet tehnologije i klase javax.servlet.http.Cookie.
- JSP kolačići su transmitunutar HTTP zaglavlja zahtjeva i odgovora na svakom odgovarajućem zahtjevu.
- Kada je preglednik konfiguriran za prihvaćanje kolačića, pohranjuje ih na disk do datuma isteka koji je postavio setMaxAge.
Zašto koristiti JSP kolačiće?
JSP programeri oslanjaju se na kolačiće jer su HTTP zahtjevi međusobno neovisni. Bez JSP kolačića, poslužitelj ne bi znao da dva zahtjeva pripadaju istom posjetitelju. Kolačići u JSP-u rješavaju ovaj problem minimalnim stanjem na strani poslužitelja.
- Sjednica trackralj: Kolačić JSESSIONID povezuje više pregleda stranica u jednu logičku sesiju.
- Personalizacija: JSP kolačići mogu pohraniti postavke jezika, teme ili izgleda.
- Pomoćnici za autentifikaciju: Tokeni "Zapamti me" i stanje prijave često se nalaze u kolačićima s omogućenim oznakama HttpOnly i Secure.
- Analitika: Kolačići u JSP-u bilježe povratne posjetitelje, preporuke i putove konverzije.
Vrste JSP kolačića
- Trajni kolačić: Trajni JSP kolačić ostaje pohranjen na uređaju tijekom vremena postavljenog s setMaxAge. Pomaže aplikaciji da zapamti postavke i podatke za prijavu nakon ponovnog pokretanja preglednika.
- Netrajni kolačić: Netrajni JSP kolačić, koji se naziva i kolačić sesije, nalazi se samo u memoriji preglednika i uklanja se kada korisnik zatvori preglednik. Uglavnom se koristi za kratkotrajne sesije. trackralj.
Metode JSP kolačića
Klasa javax.servlet.http.Cookie otkriva sljedeće metode koje se najčešće koriste pri radu s JSP kolačićima.
-
javni void setDomena(String domena)
Ova metoda postavljanja JSP kolačića postavlja domenu na koju se primjenjuje JSP kolačić.
-
javni niz znakova getDomain()
Ova JSP metoda za dobivanje kolačića vraća domenu na koju se JSP kolačić odnosi.
-
javni void setMaxAge(int istek)
Postavlja maksimalno vrijeme u sekundama prije isteka JSP kolačića. Vrijednost nula briše kolačić, a negativna vrijednost ga pretvara u kolačić sesije.
-
javno int dohvatiMaksimalnuDob()
Vraća maksimalnu starost JSP kolačića u sekundama.
-
javni niz znakova getName()
Vraća naziv JSP kolačića.
-
javni void setValue(vrijednost niza)
Postavlja vrijednost povezanu s JSP kolačićem.
-
javni niz getValue()
Vraća vrijednost povezanu s JSP kolačićem.
-
javni void setPath(String put)
Ovaj kolačić u JSP metodi postavlja URL put na koji se kolačić primjenjuje.
-
javni niz znakova getPath()
Vraća URL put na koji se primjenjuje JSP kolačić.
-
javni void setSecure(boolean flag)
Označava JSP kolačić tako da se šalje samo putem šifriranih HTTPS veza.
-
javni void setComment(String cmt)
Opisuje svrhu JSP kolačića.
-
javni niz znakova getComment()
Vraća komentar koji opisuje JSP kolačić.
Kako rukovati JSP kolačićima
Rad s JSP kolačićima uključuje tri ponovljiva koraka. Isti obrazac se koristi za stanje prijave, promjene tema i trgovinu.ping kolica.
- Kreirajte JSP objekt Cookie pomoću konstruktora Cookie.
- Konfigurirajte atribute kolačića, posebno maksimalnu starost, putanju i sigurnosne zastavice.
- Pošaljite kolačić pregledniku putem HTTP zaglavlja odgovora koristeći response.addCookie.
Kako stvoriti JSP kolačić
Novi JSP kolačić stvara se instanciranjem javax.servlet.http.Cookie s nazivom i vrijednošću. Kolačić se zatim pridružuje objektu odgovora kako bi ga preglednik pohranio.
Kako čitati JSP kolačiće
Na svaki sljedeći zahtjev, preglednik šalje odgovarajuće JSP kolačiće natrag poslužitelju. Stranica ih čita pozivom request.getCookies, koji vraća niz objekata Cookie. Aplikacija zatim iterira kroz niz, pretražuje svaki kolačić po imenu i koristi njegovu vrijednost.
Kako izbrisati JSP kolačić
Za brisanje JSP kolačića, poslužitelj stvara novi kolačić s istim nazivom, postavlja njegovu vrijednost na prazan niz, poziva setMaxAge s nulom i dodaje ga odgovoru. Preglednik zatim uklanja pohranjeni kolačić pri sljedećem odgovoru.
Primjer kolačića u JSP-u
U ovom primjeru JSP kolačića, aplikacija stvara dva kolačića za korisničko ime i e-poštu, drži ih aktivnima deset sati, a zatim čita vrijednosti natrag na drugoj stranici pod nazivom 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>
Objašnjenje za Code
Action_cookie.jsp
Code Redak 10 do 15: Stranica deklarira obrazac koji se šalje na action_cookie_main.jsp. Dva polja za unos, korisničko ime i e-pošta, prikupljaju podatke od korisnika zajedno s gumbom za slanje.
Action_cookie_main.jsp
Code Redak 6 do 9: Dva objekta kolačića, korisničko ime i e-pošta, kreiraju se pomoću request.getParameter za čitanje vrijednosti koje šalje obrazac.
Code Redak 12 do 13: Metoda setMaxAge poziva se s vrijednošću 60 pomnoženom sa 60 pomnoženom s 10, što postavlja životni vijek svakog JSP kolačića na deset sati.
Code Redak 16 do 17: Dva kolačića pridružuju se odgovoru pomoću response.addCookie. Preglednik ih zatim šalje natrag na sljedeće zahtjeve, a poslužitelj ih čita pomoću request.getCookies ili request.getParameter za trenutni zahtjev.
Izlaz
Kada izvršite gornji kod, dobit ćete sljedeći izlaz.
Kada se izvrši action_cookie.jsp, preglednik prikazuje dva polja, korisničko ime i e-poštu. Nakon što ih korisnik ispuni i klikne Pošalji, action_cookie_main.jsp stvara odgovarajuće JSP kolačiće na poslužitelju, pohranjuje ih na klijentu i prikazuje vrijednosti, potvrđujući da su kolačići uspješno kreirani.
Najbolje prakse za JSP kolačiće
Moderne web aplikacije trebale bi tretirati JSP kolačiće kao sigurnosno osjetljive podatke. Sljedeće prakse usklađene su s trenutnim implementacijama Servleta 4.x i Servleta 5.x.
- Koristi samo Http: Označite kolačiće za autentifikaciju kao HttpOnly kako ih klijentske skripte ne bi mogle čitati.
- Koristite sigurno: Kolačiće šaljite samo putem HTTPS-a pozivom funkcije setSecure(true).
- Koristite SameSite: Konfigurirajte atribut SameSite (Lax ili Strict) putem spremnika ili zaglavlja odgovora kako biste ublažili krivotvorenje zahtjeva na više web-mjesta.
- Održavajte male vrijednosti: Pohranite identifikator u kolačić i čuvajte podatke u pohrani na strani poslužitelja.
- Postavi eksplicitni istek: Koristite setMaxAge za predvidljivo ponašanje u različitim preglednicima.


