JSP - Gestion des cookies
Dans ce chapitre, nous aborderons la gestion des cookies dans JSP. Les cookies sont des fichiers texte stockés sur l'ordinateur client et ils sont conservés à diverses fins de suivi des informations. JSP prend en charge de manière transparente les cookies HTTP en utilisant la technologie de servlet sous-jacente.
L'identification et le retour des utilisateurs comportent trois étapes:
Le script serveur envoie un ensemble de cookies au navigateur. Par exemple, nom, âge ou numéro d'identification, etc.
Le navigateur stocke ces informations sur la machine locale pour une utilisation future.
Lorsque la prochaine fois que le navigateur envoie une demande au serveur Web, il envoie ces informations sur les cookies au serveur et le serveur utilise ces informations pour identifier l'utilisateur ou peut également l'être à d'autres fins.
Ce chapitre vous apprendra comment définir ou réinitialiser les cookies, comment y accéder et comment les supprimer à l'aide des programmes JSP.
L'anatomie d'un cookie
Les cookies sont généralement définis dans un en-tête HTTP (bien que JavaScript puisse également définir un cookie directement sur un navigateur). Une JSP qui définit un cookie peut envoyer des en-têtes qui ressemblent à ceci -
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name = xyz; expires = Friday, 04-Feb-07 22:03:38 GMT;
path = /; domain = tutorialspoint.com
Connection: close
Content-Type: text/html
Comme vous pouvez le voir, le Set-Cookie header contient a name value pair, a GMT date, a path et a domain. Le nom et la valeur seront encodés en URL. leexpires champ est une instruction au navigateur pour "forget" le cookie après l'heure et la date données.
Si le navigateur est configuré pour stocker des cookies, il conservera alors ces informations jusqu'à la date d'expiration. Si l'utilisateur pointe le navigateur vers une page qui correspond au chemin et au domaine du cookie, il renverra le cookie au serveur. Les en-têtes du navigateur peuvent ressembler à ceci -
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name = xyz
Un script JSP aura alors accès aux cookies via la méthode de requête request.getCookies()qui renvoie un tableau d' objets Cookie .
Méthodes de cookies de servlet
Le tableau suivant répertorie les méthodes utiles associées à l'objet Cookie que vous pouvez utiliser lors de la manipulation des cookies dans JSP -
S.No. | Méthode et description |
---|---|
1 | public void setDomain(String pattern) Cette méthode définit le domaine auquel le cookie s'applique; par exemple, tutorialspoint.com. |
2 | public String getDomain() Cette méthode obtient le domaine auquel s'applique le cookie; par exemple, tutorialspoint.com. |
3 | public void setMaxAge(int expiry) Cette méthode définit la durée (en secondes) qui doit s'écouler avant l'expiration du cookie. Si vous ne définissez pas cela, le cookie ne durera que pour la session en cours. |
4 | public int getMaxAge() Cette méthode renvoie l'âge maximum du cookie, spécifié en secondes, Par défaut, -1 indiquant que le cookie persistera jusqu'à l'arrêt du navigateur. |
5 | public String getName() Cette méthode renvoie le nom du cookie. Le nom ne peut pas être modifié après la création. |
6 | public void setValue(String newValue) Cette méthode définit la valeur associée au cookie. |
sept | public String getValue() Cette méthode obtient la valeur associée au cookie. |
8 | public void setPath(String uri) Cette méthode définit le chemin auquel ce cookie s'applique. Si vous ne spécifiez pas de chemin, le cookie est renvoyé pour toutes les URL dans le même répertoire que la page actuelle ainsi que pour tous les sous-répertoires. |
9 | public String getPath() Cette méthode obtient le chemin auquel ce cookie s'applique. |
dix | public void setSecure(boolean flag) Cette méthode définit la valeur booléenne indiquant si le cookie doit être envoyé uniquement via des connexions cryptées (c'est-à-dire SSL). |
11 | public void setComment(String purpose) Cette méthode spécifie un commentaire qui décrit le but d'un cookie. Le commentaire est utile si le navigateur présente le cookie à l'utilisateur. |
12 | public String getComment() Cette méthode retourne le commentaire décrivant l'objectif de ce cookie, ou null si le cookie n'a pas de commentaire. |
Définition de cookies avec JSP
La configuration des cookies avec JSP implique trois étapes -
Étape 1: création d'un objet Cookie
Vous appelez le constructeur Cookie avec un nom de cookie et une valeur de cookie, qui sont tous deux des chaînes.
Cookie cookie = new Cookie("key","value");
Gardez à l'esprit que ni le nom ni la valeur ne doivent contenir d'espaces blancs ou l'un des caractères suivants -
[ ] ( ) = , " / ? @ : ;
Étape 2: Définition de l'âge maximum
Tu utilises setMaxAgepour spécifier la durée (en secondes) du cookie doit être valide. Le code suivant installera un cookie pendant 24 heures.
cookie.setMaxAge(60*60*24);
Étape 3: Envoi du cookie dans les en-têtes de réponse HTTP
Tu utilises response.addCookie pour ajouter des cookies dans l'en-tête de la réponse HTTP comme suit
response.addCookie(cookie);
Exemple
Modifions notre exemple de formulaire pour définir les cookies pour le prénom et le nom.
<%
// Create cookies for first and last names.
Cookie firstName = new Cookie("first_name", request.getParameter("first_name"));
Cookie lastName = new Cookie("last_name", request.getParameter("last_name"));
// Set expiry date after 24 Hrs for both the cookies.
firstName.setMaxAge(60*60*24);
lastName.setMaxAge(60*60*24);
// Add both the cookies in the response header.
response.addCookie( firstName );
response.addCookie( lastName );
%>
<html>
<head>
<title>Setting Cookies</title>
</head>
<body>
<center>
<h1>Setting Cookies</h1>
</center>
<ul>
<li><p><b>First Name:</b>
<%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last Name:</b>
<%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>
Mettons le code ci-dessus dans main.jsp fichier et utilisez-le dans la page HTML suivante -
<html>
<body>
<form action = "main.jsp" method = "GET">
First Name: <input type = "text" name = "first_name">
<br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>
</body>
</html>
Conservez le contenu HTML ci-dessus dans un fichier hello.jsp et met hello.jsp et main.jsp dans <Tomcat-installation-directory>/webapps/ROOTannuaire. Quand vous accéderezhttp://localhost:8080/hello.jsp, voici la sortie réelle du formulaire ci-dessus.
Essayez d'entrer le prénom et le nom de famille, puis cliquez sur le bouton Soumettre. Cela affichera le prénom et le nom sur votre écran et définira également deux cookiesfirstName et lastName. Ces cookies seront renvoyés au serveur la prochaine fois que vous cliquerez sur le bouton Soumettre.
Dans la section suivante, nous expliquerons comment vous pouvez accéder à ces cookies dans votre application Web.
Lire les cookies avec JSP
Pour lire les cookies, vous devez créer un tableau d' objets javax.servlet.http.Cookie en appelant legetCookies( )méthode de HttpServletRequest . Ensuite, parcourez le tableau et utilisezgetName() et getValue() méthodes pour accéder à chaque cookie et valeur associée.
Exemple
Lisons maintenant les cookies qui ont été définis dans l'exemple précédent -
<html>
<head>
<title>Reading Cookies</title>
</head>
<body>
<center>
<h1>Reading Cookies</h1>
</center>
<%
Cookie cookie = null;
Cookie[] cookies = null;
// Get an array of Cookies associated with the this domain
cookies = request.getCookies();
if( cookies != null ) {
out.println("<h2> Found Cookies Name and Value</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
out.print("Name : " + cookie.getName( ) + ", ");
out.print("Value: " + cookie.getValue( )+" <br/>");
}
} else {
out.println("<h2>No cookies founds</h2>");
}
%>
</body>
</html>
Mettons maintenant le code ci-dessus dans main.jspfichier et essayez d'y accéder. Si vous définissez lefirst_name cookie comme "John" et le last_name cookie comme "Player" puis en cours d'exécution http://localhost:8080/main.jsp affichera le résultat suivant -
Found Cookies Name and Value
Name : first_name, Value: John
Name : last_name, Value: Player
Supprimer les cookies avec JSP
Supprimer les cookies est très simple. Si vous souhaitez supprimer un cookie, il vous suffit de suivre ces trois étapes -
Lisez un cookie déjà existant et stockez-le dans l'objet Cookie.
Définissez l'âge des cookies sur zéro à l'aide du setMaxAge() méthode pour supprimer un cookie existant.
Ajoutez ce cookie dans l'en-tête de la réponse.
Exemple
L'exemple suivant vous montrera comment supprimer un cookie existant nommé "first_name" et lorsque vous exécuterez la JSP main.jsp la prochaine fois, il retournera une valeur nulle pour first_name.
<html>
<head>
<title>Reading Cookies</title>
</head>
<body>
<center>
<h1>Reading Cookies</h1>
</center>
<%
Cookie cookie = null;
Cookie[] cookies = null;
// Get an array of Cookies associated with the this domain
cookies = request.getCookies();
if( cookies != null ) {
out.println("<h2> Found Cookies Name and Value</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
if((cookie.getName( )).compareTo("first_name") == 0 ) {
cookie.setMaxAge(0);
response.addCookie(cookie);
out.print("Deleted cookie: " +
cookie.getName( ) + "<br/>");
}
out.print("Name : " + cookie.getName( ) + ", ");
out.print("Value: " + cookie.getValue( )+" <br/>");
}
} else {
out.println(
"<h2>No cookies founds</h2>");
}
%>
</body>
</html>
Mettons maintenant le code ci-dessus dans le main.jspfichier et essayez d'y accéder. Il affichera le résultat suivant -
Cookies Name and Value
Deleted cookie : first_name
Name : first_name, Value: John
Name : last_name, Value: Player
Maintenant, exécutez à nouveau http: // localhost: 8080 / main.jsp et il ne devrait afficher qu'un seul cookie comme suit -
Found Cookies Name and Value
Name : last_name, Value: Player
Vous pouvez supprimer manuellement vos cookies dans Internet Explorer. Démarrez dans le menu Outils et sélectionnez les Options Internet. Pour supprimer tous les cookies, cliquez sur le bouton Supprimer les cookies.