Les cookies en JSP
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Qu'est-ce qu'un cookie?
- 4- Avantage et Inconvénient
- 4.1- Avantage des cookies
- 4.2- Inconvénient des cookies
- 5- La classe Cookie
- 6- Utilisations
- 6.1- Comment créer un cookie?
- 6.2- Comment supprimer ou modifier les Cookies ?
- 6.3- Comment obtenir des cookies?
- 7- Définition de cookies avec JSP
- 7.1- Étape 1: création d'un objet Cookie
- 7.2- Étape 2: Définir la date d’expiration du cookie
- 7.3- Étape 3: Définir le domaine de cookie
- 7.4- Étape 4:Envoi du cookie dans les en-têtes de réponse HTTP
- 7.5- Étape 5:Définir le chemin du cookie
- 8- Exemple simple de cookies Servlet
- 8.1- La page JSP
- 8.2- La première Servlet
- 8.3- La Deuxième Servlet
- 9- Applications
- 9.1- exercice 01
- 9.2- Enoncé
- 9.3- Solution
- 9.4- exercice 02
- 9.5- Enoncé
- 9.6- Solution
- 9.6.1- Sommaire du cours JSP
Les cookies en JSP
Objectifs
- Connaitre les Cookies
- Etre capable de travailler avec les Cookies
-
Présentation
- Le protocole HTTP est sans état. La technologie utilise un mode déconnecté (connexion pour la requête en cours puis déconnexion). Chaque requête est considérée comme provenant d’un client différent à chaque fois.
- Il est important dans une application Web de pouvoir suivre la navigation du client sur le site et de garder certaines informations qui permettent de l’identifier de manière unique et fiable.
-
Qu’est-ce qu’un cookie?
- Un cookie est essentiellement un fichier texte stocké sur l’ordinateur client et utilisés pour stocker des informations.
- Un cookie est un élément de données qui peut être envoyé par le serveur à destination du navigateur client. Le cookie est stocké soit en mémoire (expiration rapide) soit sur le système de fichiers du client (expiration longue).
- Un cookie est un fichier téléchargé sur votre ordinateur, tablette ou tout autre terminal mobile lors de l’accès à notre site Web. Les cookies nous permettent de stocker et récupérer des informations sur vos habitudes de navigation ou de l’équipement à partir duquel vous accédez au site.
- L’avantage réside dans le fait qu’à chaque connexion du client, le navigateur transmet également le cookie (ou les cookies) que notre serveur a précédemment déposé(s).
- Une JSP peut accéder aux cookies via la méthode de requête
request.getCookies()
qui renvoie un tableau d’objets Cookie. -
Avantage et Inconvénient
-
Avantage des cookies
- Technique la plus simple de maintien de l’état.
- Les cookies sont conservés côté client.
-
Inconvénient des cookies
- Cela ne fonctionnera pas si le cookie est désactivé à partir du navigateur.
- Seules les informations textuelles peuvent être définies dans l’objet Cookie.
-
La classe Cookie
- Pour gérer les cookies, le langage Java propose une classe prédéfinie nommé
Cookie
Cookie unCookie = new Cookie (nom, valeur);
nom
: est une chaine de caractère (String) spécifiant le nom du fichier dans lequel l’information est stockée.valeur
: est une chaine de caractère (String) qui correspond à la valeur à enregistrer dans le fichier.unCookie:
est un objet de type Cookie qui contient toutes les informations utiles à son traitement (nom du fichier ,valeur, méthodes permettant de récupérer les valeurs enregistrées dans le fichier).- Lorsque cette instruction est exécuté, l’information est stockée en mémoire sur le serveur .Pour l’enregistrer sur le disque de l’utilisateur, il est nécessaire de l’envoyer en utilisant l’objet
response
comme suit: response.addCookie(unCookie);
- L’objet response, à l’inverse de l’objet request, transmet les informations du serveur vers le client (l’ordinateur de l’internaute).l’appelde la méthode
addCookie()
appliquée à l’objetresponse
à pour résultat d’envoyer, dans l’entête HTTP, le cookie unCookie et de le poser sur le disque dur de l’utilisateur. Classe javax.servlet.http.Cookie
: pour utiliser les Cookies- Cookie(String name, String value) : construit un cookie
- String getName() : retourne le nom du cookie
- String getValue() : retourne la valeur du cookie
- setValue(String new_value) : donne une nouvelle valeur au cookie
- setMaxAge(int expiry) : spécifie l’âge maximum du cookie
-
Utilisations
-
Comment créer un cookie?
- Voyons le code simple pour créer un cookie.
-
Comment supprimer ou modifier les Cookies ?
- Pour modifier un cookie, il suffit de le réécrire avec le même nom et en changeant les autres informations.
- Notez qu’on ne va pas pouvoir changer le nom d’un cookie : si l’on change de nom, cela sera considéré comme un autre cookie et ça n’effacera pas le premier.
- Pour supprimer un cookie, la méthode la plus simple est de le réécrire sans valeur et en précisant cette fois-ci une date d’expiration passée.
- Voyons le code simple pour supprimer le cookie. Il est principalement utilisé pour connecter ou déconnecter l’utilisateur.
-
Comment obtenir des cookies?
- Voyons le code simple pour obtenir tous les cookies.
-
Définition de cookies avec JSP
- La création 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éfinir la date d’expiration du cookie
- Vous utilisez
setMaxAge
pour 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);
- Passé ce délai, le cookie ne peut plus être utilisé par un client (navigateur) lors de l’envoi d’une requête et doit également être supprimé du cache du navigateur.
-
Étape 3: Définir le domaine de cookie
- Une autre méthode utile dans l’API Cookie est
setDomain (String)
. - Cela nous permet de spécifier les noms de domaine sur lesquels il doit être livré par le client. Cela dépend également de si nous spécifions explicitement ou non le nom de domaine.
cookie.setDomain("apcpedagogie.com");
-
Étape 4:Envoi du cookie dans les en-têtes de réponse HTTP
- Vous utilisez
response.addCookie
pour ajouter des cookies dans l’en-tête de réponse HTTP comme suit response.addCookie(cookie);
-
Étape 5:Définir le chemin du cookie
- Si nous spécifions un chemin explicitement, alors un Cookie sera remis à l’URL donnée et à tous ses sous-répertoires: **
cookie.Path("/utilisateur");
- Implicitement, il sera défini sur l’URL qui a créé un cookie et tous ses sous-répertoires.
-
Exemple simple de cookies Servlet
- Dans cet exemple, nous travaillons sur trois documents une page JSP et deux servlets,
- La page Jsp contient un formulaire qui propose la saisie du nom du client et un bouton submit
- La première servlet récupère le nom d’utilisateur avec le mot « Bienvenue : », crée un cookie avec le nom d’utilisateur et propose l’affichage de cookie à travers d’un formulaire qui appelle la deuxième servlet.
- La deuxième servlet affiche le nom et le numéro du servlet
-
La page JSP
-
La première Servlet
-
La Deuxième Servlet
-
Applications
-
exercice 01
-
Enoncé
- Ecrire une page JSP qui permet de sauvegarder les heures de visites d’un utlisateur dans un cookie , et affiche les détails de visites comme suit :
- Pour la première visite : Informer l’utilisateur que c’est sa première visite suivi de la date et l’heure de visite
- Pour les visites ultérieures : Informer l’utilisateur le numéro de la visite suivi de la date et l’heure, pour chaque visite.
-
Solution
-
exercice 02
-
Enoncé
- Ecrire une page jsp qui :
- Affiche la liste des n cookies reçues par le serveur
- Ajoute un cookie Cookie_n+1 ayant la valeur n+1
-
Solution
Syntaxe:
Cookie ck = new Cookie ( "utilisateur" , "sonoo jaiswal" );
// créer un objet cookie
response.addCookie (ck); // ajout d’un cookie dans la réponse
Cookie ck = new Cookie ( "utilisateur" ,"" );
// suppression de la valeur du cookie
ck.setMaxAge ( 0 ); // changer l’âge maximum à 0 secondes
response.addCookie (ck); // ajout d’un cookie dans la réponse
Cookie ck [] = request.getCookies ();
pour ( int i = 0 ; i <ck.length; i ++) {
out.print ( "<br>" + ck [i] .getName () + "" + ck [i] .getValue ()); // impression du nom et de la valeur du cookie
}
-
Définition de l’âge maximum