Exercice 5 - Les cookies⚓︎
Rappel
-
Un cookie est une information envoyée par le serveur Web au client (le navigateur), qui peut ensuite être relue par le client.
-
Lorsqu'un client reçoit un cookie, il le sauve (sous la forme d'un fichier) et le renvoie ensuite au serveur chaque fois qu'il accède à une page sur ce serveur (plus précisément, à chaque fois qu'il effectue une requête HTTP sur ce serveur).
L'objet Cookie
L'API Servlet fourni un objet Cookie (javax.servlet.http.Cookie
), dont voici quelques méthodes utiles (la Javadoc est ici) :
Cookie(String name, String value)
: construit un cookie.String getName()
: retourne le nom du cookie.String getValue()
: retourne la valeur du cookie.setValue(String newValue)
: donne une nouvelle valeur au cookie.setMaxAge(int expiry)
: spécifie l’âge maximum du cookie.
On ajoute un cookie donné à la réponse HTTP via HttpServletResponse.addCookie(Cookie monCookie)
.
On récupère les cookies présents dans la requête HTTP via Cookie[] HttpServletRequest.getCookies()
. Cette méthode renvoie un tableau de Cookie
, qui peut être null
si aucun cookie n'est présent dans la requête.
Exemple :
if (null != cookies) {
for (Cookie cookie : cookies) {
System.out.println(cookie.getName());
System.out.println(cookie.getValue());
}
}
Question 1 - Mise en place d'un cookie de connexion
Crée une Servlet, implémentant la méthode doGet
pour gérer les cookies :
-
Si le client est déjà connu, alors le message :
Encore vous !
est affiché.
-
Sinon un cookie est ajouté à la réponse HTTP, dont le nom est
id_mon_site
, et la valeur générée automatiquement viajava.rmi.server.UID().toString()
. Le message :Bienvenue !
est affiché.
Aide
Pour savoir si le client est déjà connu, on regardera si un cookie dont le nom est id_mon_site
existe dans la requête.
Pour tester ...
Pour pouvoir tester ce que tu as fait ici, il faut :
- soit supprimer les cookies à chaque nouveau test,
- soit te mettre en "navigation privée", les cookies sont ainsi automatiquement supprimés lorsque la fenêtre est fermée ...
Question 2 - Pour aller plus loin
Modifier le code pour que le cookie soit désactivé au bout de 5 secondes, c'est-à-dire que si on met plus de 5 secondes avant de raffraîchir la page, le message affiché est à nouveau "Bienvenue !".