Aller au contenu

Exercice 3 - Utilisation de la session⚓︎

La session en JEE

Problématique : HTTP est un protocole sans état". Aucune information n'est conservée entre deux requêtes HTTP.

On souhaite avoir un objet "session" qui conserve en mémoire des informations liées à l'utilisateur. On souhaite par exemple pouvoir retenir son nom, qu'il a saisi lors de la connexion à l'application, sans avoir à lui redemander à chaque page.

JEE permet de faire cela grace à l'objet jakarta.servlet.http.HttpSession. Cet objet utilise en fait un cookie pour faire le lien entre les différentes requêtes HTTP, mais ceci est transparent pour le développeur qui l'utilise.

Pour obtenir cet objet, on passe par la requête, en effectuant request.getSession(). Cela permet d'obtenir la session de l'utilisateur, et éventuellement de la créer si elle n'existe pas encore.

De la même manière qu'avec l'objet jakarta.servlet.http.HttpServletRequest, il est ensuite possible :

  • de sauvegarder des informations, via void HttpSession.setAttribute(String name, Object value),
  • de les récupérer via Object getAttribute(String name).

Exercice 3.1 - Compteur de passage⚓︎

Compteur de passage

Créer une Servlet CounterServlet qui affiche un compteur qui est incrémenté à chaque accès sur cette servlet durant la navigation de l'utilisateur.

Il faut vérifier que l'utilisateur peut afficher d'autres pages (c'est-à-dire exécuter d'autres servlets), et que le compteur continue de s'incrémenter lorsqu'il exécute à nouveau cette Servlet.

L'affichage de ce compteur incrémenté se fera via http://localhost:8080/td3/counter.

Attention

La Servlet doit récupérer et incrémenter la valeur du compteur, mais elle doit également rediriger vers une JSP qui va afficher cette valeur.

Encore une fois, on n'écrit jamais de code HTML dans une Servlet !

Exercice 3.2 - Connexion à l'application⚓︎

Connexion à l'application

Modifier la méthode doPost de la servlet de connexion (de l'exercice précédent) pour que le prénom de l'utilisateur ne soit pas stocké en requête, mais en session afin de pouvoir être utilisé dans n'importe quelle page.

Dans chaque JSP de ce projet, afficher le prénom de l'utilisateur connecté (null si personne ne s'est connecté), ce prénom étant cliquable. Le clic permettant à l'utilisateur de se déconnecter.