Attorno ai cookies è cresciuta col passare del tempo una sorta di cattiva reputazione, dovuta all'uso improprio che ne viene fatto da alcuni progettisti di pagine Web. Ma i cookies altro non sono che un insieme di informazioni associate ad un particolare dominio, che vengono memorizzate dal browser (il client) sotto forma di file di solo testo. Queste informazioni permettono all'applicazione Web di mantenere le preferenze dell'utente, per esempio.
Con lo sviluppo di applicazioni sempre più complesse ed efficienti, l'utilizzo dei cookies è diventato indispensabile e, se usati nel modo giusto, aiutano a migliorare l'usabilita del sito.
Fatte queste premesse, vediamo quali sono le istruzioni che ci servono. Per prima cosa impariamo a scrivere un cookie, compito del metodo addCookie()
dell'oggetto response
:
response.addCookie(cookie)
al quale diamo in pasto un'istanza della classe Cookie
che ha alcuni metodi che ci permettono di impostare le proprietà del cookie. Ecco come:
// definisce un oggetto Cookie con e la coppia // nome-valore da memorizzare Cookie mioCookie = new Cookie ("nome", "valore"); // specifica il percorso del cookie // che ha il privilegio di scrittura e lettura // se omesso è inteso il percorso corrente mioCookie.setPath("/"); // imposta il periodo di vita, espresso in secondi mioCookie.setAge(secondiDiVita); // indica se il cookie va trasmesso solo su un // protocollo sicuro, protetto cioè da crittografia mioCookie.setSecure(false); // scrive il cookie response.addCookie(mioCookie);
A questo punto mioCookie
è scritto sul client. Per leggere il cookie l'operazione è leggermente più complicata. L'oggetto request dispone infatti di un metodo getCookies()
che restituisce un array di oggetti cookie trovati nel client. Una volta ottenuto l'array, è quindi necessario passare in rassegna tutti i suoi elementi fino a trovare quello che ci interessa:
// definisce un cookie che conterrà il risultato Cookie mioCookie = null; // definisce un array di cookie per leggere quelli dell'utente Cookie[] cookiesUtente = request.getCookies(); // indice per la gestione del ciclo int indice = 0; while (indice < cookiesUtente.length) { // esegue il ciclo fino a quando ci sono elementi in cookieUtente if (cookiesUtente[indice].getName().equals("nomeMioCookie"); break; indice++; // se trova un cookie con il nome che stiamo cercando esce dal ciclo }// while
A questo punto controllando il valore dell'indice siamo in grado di capire se abbiamo trovato il nostro cookie.
if (indice < cookiesUtente.length) // il cookie è stato trovato e viene messo nell'oggetto mioCookie mioCookie = cookiesUtente[indice]; else // il cookie non è stato trovato mioCookie = null;
Ora, se il cookie è stato trovato, è possibile accedere ai sui dati con i metodi dell'oggetto stesso, principalmente getValue()
per ottenere il valore contenuto.
Valore = mioCookie.getValue()
Altri metodi sono:
Metodo | Descrizione |
---|---|
getName() | restituisce il nome |
getAge() | restituisce il periodo di vita in secondi |
getPath() | restituisce il percorso che ha il permesso di lettura/scrittura |
getSecure() | restituisce un buleano che dice se il cookie è sicuro oppure no |