Différence entre request.getSession () et request.getSession (true)

1. Vue d'ensemble

Dans ce rapide tutoriel, nous verrons la différence entre l'appel de HttpServletRequest # getSession () et HttpServletRequest # getSession (boolean) .

2. Quelle est la différence?

Les méthodes getSession () et getSession (boolean) sont très similaires. Il y a cependant une petite différence. La différence est de savoir si la session doit être créée si elle n'existe pas déjà.

L'appel de getSession () et getSession (true) sont fonctionnellement identiques : récupérez la session en cours, et si elle n'existe pas encore, créez-la.

L'appel de getSession (false) , cependant, récupère la session en cours, et si elle n'existe pas encore, renvoie null . Entre autres, c'est pratique lorsque nous voulons demander si la session existe.

3. Exemple

Dans cet exemple, nous considérons ce scénario:

  • l'utilisateur entre l' ID utilisateur et se connecte à l'application
  • l'utilisateur entre ensuite le nom d'utilisateur et l' âge et souhaite mettre à jour ces détails pour l'utilisateur connecté

Nous stockerons les valeurs utilisateur dans la session pour comprendre l'utilisation de HttpServletRequest # getSession () et HttpServletRequest # getSession (boolean).

Commençons par créer un servlet dans lequel nous utilisons HttpServletRequest # getSession () dans sa méthode doGet () :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); session.setAttribute("userId", request.getParameter("userId")); } 

À ce stade, le servlet récupérera la session existante ou en créera une nouvelle pour l'utilisateur connecté, si elle n'existe pas.

Ensuite, nous allons définir l' attribut userName dans la session.

Comme nous voulons mettre à jour les détails de l'utilisateur pour l'ID utilisateur respectif, nous voulons la même session et ne voulons pas créer une nouvelle session pour stocker le nom d'utilisateur.

Alors maintenant, nous allons utiliser HttpServletRequest # getSession (boolean) avec une valeur fausse :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if (session != null) { session.setAttribute("userName", request.getParameter("userName")); } }

Cela entraînera la définition de l' attribut userName sur la même session que celle précédemment définie par userId .

4. Conclusion

Dans ce didacticiel, nous avons expliqué la différence entre les méthodes HttpServletRequest # getSession () et HttpServletRequest # getSession (boolean) .

L'exemple complet est disponible à l'adresse over sur GitHub.