Les cookies sont des fichiers texte stockés sur l'ordinateur client et enregistrent une grande quantité d'informations de suivi. Basé sur la technologie des servlets, JSP peut évidemment prendre en charge les cookies HTTP.
Il y a généralement trois étapes pour identifier les clients réguliers :
Le script du serveur envoie une série de cookies au navigateur. Tels que le nom, l'âge, le numéro d'identification, etc.
Le navigateur stocke ces informations localement sur l'ordinateur au cas où cela serait nécessaire.
La prochaine fois que le navigateur enverra une requête au serveur, il enverra également ces informations de cookie au serveur, puis le serveur utilisera ces informations pour identifier l'utilisateur ou faire d'autres choses.
Cette section vous apprendra comment paramétrer ou réinitialiser les cookies, comment y accéder et comment les supprimer.
Les cookies sont généralement définis dans les en-têtes HTTP (bien que JavaScript puisse définir des cookies directement dans le navigateur). Dans JSP, la définition d'un cookie nécessite l'envoi de l'en-tête d'informations suivant au serveur :
HTTP/1.1 200 OKDate : vendredi 4 février 2000 21:03:38 GMTServeur : Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie : nom = xyz expire = vendredi 4 février 2007 22 h 03 : 38 GMT ; chemin=/; domaine=tutorialspoint.comConnexion : closeContent-Type : texte/html
Comme vous pouvez le voir, l'en-tête Set-Cookie contient une paire clé-valeur, une heure GMT (Greenwich Mean Time), un chemin et un nom de domaine. Les paires clé-valeur seront codées sous forme d'URL. Le champ de date d'expiration est une instruction qui indique au navigateur après quel délai il peut effacer ce cookie.
Si votre navigateur est configuré pour stocker des cookies, il conservera ces informations jusqu'à leur expiration. Si une page visitée par l'utilisateur correspond au chemin et au nom de domaine indiqués dans le cookie, le navigateur renverra le cookie au serveur. L'en-tête côté navigateur ressemble à ceci :
GET / HTTP/1.0Connexion : Keep-AliveUser-Agent : Mozilla/4.6 (X11 ; I ; Linux 2.2.6-15apmac ppc)Hôte : zink.demon.co.uk:1126Accepter : image/gif, */*Accepter- Encodage : gzipAccept-Langue : enAccept-Charset : iso-8859-1,*,utf-8Cookie : nom=xyz
Les scripts JSP accèdent à ces cookies via la méthode getCookies() dans l'objet de requête. Cette méthode renvoie un tableau d'objets Cookie.
Le tableau suivant répertorie les méthodes couramment utilisées dans les objets Cookie :
numéro de série | Méthode et description |
---|---|
1 | public void setDomain (String pattern) définit le nom de domaine du cookie, tel que w3cschool.cn |
2 | public String getDomain() obtient le nom de domaine du cookie, tel que w3cschool.cn |
3 | public void setMaxAge(int expiry) définit la période de validité du cookie en secondes. La période de validité par défaut est la durée de survie de la session en cours. |
4 | public int getMaxAge() obtient la période de validité du cookie en secondes, la valeur par défaut est -1, indiquant que le cookie restera actif jusqu'à la fermeture du navigateur |
5 | public String getName() renvoie le nom du cookie. Le nom ne peut pas être modifié après sa création. |
6 | public void setValue (String newValue) définit la valeur du cookie |
7 | public String getValue() récupère la valeur du cookie |
8 | public void setPath(String uri) définit le chemin du cookie, qui correspond par défaut à toutes les URL du répertoire de la page actuelle et à tous les sous-répertoires de ce répertoire. |
9 | public String getPath() obtient le chemin du cookie |
10 | public void setSecure (drapeau booléen) indique si le cookie doit être crypté pour la transmission |
11 | public void setComment(String goal) définit le commentaire pour décrire le but du cookie. Les annotations peuvent être utiles lorsque le navigateur affiche le cookie à l'utilisateur |
12 | public String getComment() renvoie un commentaire décrivant le but du cookie, ou null s'il n'y en a pas |
La configuration des cookies à l'aide de JSP implique trois étapes :
(1) Créez un objet Cookie : appelez le constructeur Cookie, en utilisant un nom et une valeur de cookie comme paramètres, qui sont tous deux des chaînes.
Cookie cookie = new Cookie("clé","valeur");
Il est important de rappeler que ni le nom ni la valeur ne peuvent contenir d'espaces ou les caractères suivants :
[ ] ( ) = , " / ? @ : ;
(2) Définissez la période de validité : Appelez la fonction setMaxAge() pour indiquer combien de temps (en secondes) le cookie est valide. L'opération suivante fixe la période de validité à 24 heures.
cookie.setMaxAge(60*60*24);
(3) Envoyer des cookies à l'en-tête de réponse HTTP : appelez la fonction Response.addCookie() pour ajouter des cookies à l'en-tête de réponse HTTP.
réponse.addCookie(cookie);
<% // Définir des cookies pour first_name et last_name Cookie firstName = new Cookie("first_name", request.getParameter("first_name")); Cookie lastName = new Cookie("last_name",request.getParameter("last_name")); //Définissez le délai d'expiration du cookie sur 24 heures. firstName.setMaxAge(60*60*24); lastName.setMaxAge(60*60*24); // Ajouter un cookie à l'en-tête de réponse réponse.addCookie( firstName ); head><title>Paramétrage des cookies</title></head><body><center><h1>Paramètre Cookies</h1></center><ul><li><p><b>Prénom :</b><%= request.getParameter("first_name")%></p></li>< li><p><b>Nom :</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
Placez le fichier ci-dessus dans le répertoire <Répertoire d'installation Tomcat>/webapps/ROOT, puis visitez http://localhost:8080/hello.jsp, vous obtiendrez le résultat suivant :
Essayez de saisir le prénom et le nom, puis cliquez sur le bouton Soumettre. Il affichera le prénom et le nom sur votre écran et définira deux cookies, le prénom et le nom, qui seront envoyés au serveur la prochaine fois que vous cliquerez. le bouton Soumettre.
Pour lire les cookies, vous devez appeler la méthode request.getCookies() pour obtenir un tableau d'objets javax.servlet.http.Cookie, puis parcourir le tableau et utiliser les méthodes getName() et getValue() pour obtenir chaque cookie. . nom et valeur.
Lisons les cookies de l'exemple précédent.
<html><head><title>Cookies de lecture</title></head><body><center><h1>Cookies de lecture</h1></center><% Cookie cookie = null Cookie[] cookies = null; // Récupère les données des cookies, qui sont un tableau cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Nom et valeur des cookies trouvés</h2>"); int je = 0; i < cookies.length; i++){ cookie = cookies[i]; "Nom : " + cookie.getName( ) + ", "); ( )+" <br/>"); } }else{ out.println("<h2>Aucun cookie trouvé</h2>");
Si vous définissez le prénom du cookie sur « John » et le nom de famille sur « Player » et visitez http://localhost:8080/main.jsp, vous obtiendrez le résultat suivant :
Nom et valeur des cookies trouvés : prénom, valeur : John Nom : nom, valeur : joueur
La suppression des cookies est très simple. Si vous souhaitez supprimer un cookie, suivez simplement les étapes ci-dessous :
Récupérez un cookie existant et stockez-le dans l'objet Cookie.
Fixez la date d'expiration du cookie à 0.
Ajoutez à nouveau ce cookie à l'en-tête de réponse.
Le programme suivant supprime un cookie nommé "first_name". La prochaine fois que vous exécuterez main.jsp, first_name sera nul.
<html><head><title>Cookies de lecture</title></head><body><center> <h1>Cookies de lecture</h1></center><% Cookie cookie = null Cookie[] cookies =; null; // Récupère les cookies sous le nom de domaine actuel, qui est un tableau cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> Nom et valeur des cookies trouvés</h2> "); pour (int je = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName( )).compareTo("first_name") == 0 ){ cookie.setMaxAge(0); (cookie); out.print("Cookie supprimé : " + cookie.getName( ) + "<br/>" } out.print("Nom : " + cookie.getName( ) + ", "); out.print("Valeur : " + cookie.getValue( )+" <br/>"); } }else{ out.println( "<h2>Aucun cookie trouvé</h2>"); corps></html>
Y accéder vous donnera le résultat suivant :
Nom et valeur des cookiesCookie supprimé : first_nameName : first_name, Value : JohnName : last_name, Value : Player
Visitez à nouveau http://localhost:8080/main.jsp et vous obtiendrez les résultats suivants :
Nom et valeur des cookies trouvés : last_name, valeur : joueur
Vous pouvez également supprimer les cookies manuellement dans votre navigateur. Cliquez sur l'élément de menu Outils, puis sélectionnez Options Internet, cliquez sur Supprimer les cookies pour supprimer tous les cookies.