Ressource
Pourquoi les sessions et cookies ? 02 - 06 - Utiliser les cookies pour créer des sessions en HTTP
Le protocole HTTP est dit dĂ©connectĂ©. Câest-Ă -dire que si depuis le navigateur on refait la mĂȘme requĂȘte le serveur a âoubliĂ©â que nous rĂ©alisons notre deuxiĂšme requĂȘte (stateless).
Session
Une session est un ensemble de requĂȘte dont le serveur se rappelle quâelles appartiennent Ă un mĂȘme client
Par exemple, lorsquâon ajoute sur un site de e-commerce des articles Ă notre panier alors comme nous nâavons pas de notion de session avec le protocole HTTP nous nâaurons quâun seul article dans notre panier. Le serveur a oubliĂ© nos requĂȘtes prĂ©cĂ©dentes. Ceci Ă©tant assez contraignant, nous utilisons des cookies pour âsimulerâ les sessions.
Lors de la rĂ©ponse, en plus de nous renvoyer le html et css, le site de e-commerce renvoie un fichier contenant les informations de notre panier. Puis lorsquâon va rĂ©aliser une nouvelle requĂȘte, en plus dâenvoyer lâarticle Ă ajouter nous envoyons Ă©galement le fichier contenant les articles dĂ©jĂ ajoutĂ©s.
Session avec lâAPI Servlet
Pour enregistrer les informations en âsessionâ on utilise
HttpSession session = request.getSession();
session.setAttribut("clĂ©", valeur);Puis lorsquâon souhaite rĂ©cupĂ©rer un objet en session
HttpSession session = request.getSession();
Object object = sessions.getAttribut("clé");Exemple
En nous appuyant sur le formulaire créé prĂ©cĂ©demment, nous souhaitons concatĂ©ner les noms dâune mĂȘme session. La diffĂ©rence est dans le doPost qui doit gĂ©rer la session
@WebServlet("/inscription")
public class InscriptionServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Récupération des paramÚtres du formulaire
String nomParam = request.getParameter("nom");
Utilisateur user = (Utilisateur) request.getSession().getAttribute("user");
if (user == null) {
user = new Utilisateur();
request.getSession().setAttribute("user", user);
}
user.nom = user.nom + " " + nomParam;
request.setAttribute("message", "Inscription réussie pour " + user.nom);
// Redirection vers la page de confirmation
RequestDispatcher dispatcher = request.getRequestDispatcher("confirmation.jsp");
dispatcher.forward(request, response);
}
}- Lâutilisateur interroge pour la premiĂšre fois le serveur
- Si aucune session existe il en crée une puis retourne un
JSESSIONIDcookie au client - Lors dâune nouvelle requĂȘte on fournit en plus le
JSESSIONID
Ci-dessous, depuis le navigateur on a renseignĂ© le nom âAdrienâ puis ensuite via le JSESSIONID depuis curl nous avons rajoutĂ© âCAUBELâ

