web-dev-qa-db-fra.com

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

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) & ..()

32
Ali Khan

request.getSession() est juste une méthode pratique. Il fait exactement la même chose que request.getSession(true).

33
Jan

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.

5
Ruby Kannan

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);
4
mike

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.
2
user3906011

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.

0
CRR