Je comprends la différence entre request.getSession(true)
et request.getSession(false)
. Mais request.getSession()
& request.getSession(true)
sont très similaires!
Les deux "renvoient la session en cours associée à cette demande", mais diffèrent par:
request.getSession()
:"ou si la demande n'a pas de session, en crée une"
request.getSession(true)
:"s'il n'y a pas de session en cours, renvoie une nouvelle session"
Je ne comprends pas la différence entre eux, est-ce que (s'ils n'en existent pas) ils créent une nouvelle session mais que la première ne le fait pas retour mais que le second le fait?
Source: http://docs.Oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html
Modifier:
Quelqu'un a marqué/marqué ma question comme étant en double, même si ce n'est pas le cas. Je vais expliquer pourquoi.
J'ai explicitement demandé la différence entre request.getSession()
& request.getSession(true)
et NOT entre request.getSession(true)
& request.getSession(false)
! J'ai dit, encore explicitement, que je comprenais déjà la différence b/w ..(true)
& ..(false)
.
La question lié en tant que possible duplicata de questions sur la différence b/w ..(true)
& ..(false)
et non ..(true)
& ..()
request.getSession()
est juste une méthode pratique. Il fait exactement la même chose que request.getSession(true)
.
Méthode avec argument booléen:
request.getSession(true);
retourne une nouvelle session, si la session n'est pas associée à la demande
request.getSession(false);
renvoie la valeur null si la session n'est pas associée à la demande.
Méthode sans argument booléen:
request.getSession();
renvoie la nouvelle session, si la session n'est pas associée à la demande et renvoie la session existante, si la session est associée à la demande. Il ne renverra pas la valeur null.
Ils renvoient tous les deux la même chose, comme indiqué dans la documentation que vous avez liée; un Objet HttpSession.
Vous pouvez également examiner une implémentation concrète (par exemple, Tomcat ) et voir ce qu’elle fait réellement: Request.Java class. Dans ce cas, ils appellent tous les deux:
Session session = doGetSession(true);
Une différence pratique majeure est son utilisation:
dans security scenario
où nous avons toujours besoin d'une nouvelle session, nous devrions utiliser request.getSession(true)
.
request.getSession(false): will return null if no session found.
request.getSession () ou request.getSession (true) renverront tous deux une session en cours uniquement. Si la session en cours n'existera pas, une nouvelle session sera créée.