Подтвердить что ты не робот

Разница между request.getSession() и request.getSession(true)

Я понимаю разницу между request.getSession(true) и request.getSession(false). Но request.getSession() и request.getSession(true) выглядят очень похожими!

Оба "возвращают текущий сеанс, связанный с этим запросом", но отличаются:

request.getSession():

"или если запрос не имеет сеанса, создает один"

request.getSession(true):

", если текущий сеанс отсутствует, возвращает новый сеанс"

Я не понимаю разницы между ними, не так ли (если они не существуют), они создают новый сеанс, но первый не возвращает, а второй делает?

Источник: http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

Edit:

Кто-то помеченный/помеченный мой вопрос как дубликат, даже если это не так. Я объясню, почему.

Я прямо спросил разницу между request.getSession() и request.getSession(true) и НЕ между request.getSession(true) и request.getSession(false)! Я еще раз заявлял, что я уже понимаю разницу b/w ..(true) и ..(false).

Вопрос связан как возможный дублированный вопрос о разности b/w ..(true) и ..(false), а не ..(true) и ..()

4b9b3361

Ответ 1

request.getSession() - просто удобный метод. Он делает то же самое, что и request.getSession(true).

Ответ 2

request.getSession() вернет текущий сеанс. если текущий сеанс не существует, то он создаст новый.

request.getSession(true) вернет текущий сеанс. Если текущий сеанс не существует, то он создаст новый сеанс.

Таким образом, в принципе нет разницы между обоими методами.

request.getSession(false) вернет текущий сеанс, если текущий сеанс существует, а затем он не создаст новый сеанс.

Ответ 3

Метод с логическим аргументом:

  request.getSession(true);

возвращает новый сеанс, если сеанс не связан с запросом

  request.getSession(false);

возвращает значение null, если сеанс не связан с запросом.

Метод без логического аргумента:

  request.getSession();

возвращает новый сеанс, если сеанс не связан с запросом и возвращает существующий сеанс, если сеанс связан с запросом. Он не вернет null.

Ответ 4

Оба они возвращают то же самое, что указано в документации, которую вы связывали;  Объект HttpSession.

Вы также можете посмотреть конкретную реализацию (например, Tomcat) и посмотреть, что она на самом деле делает: Request.java. В этом случае в основном они оба называют:

Session session = doGetSession(true);

Ответ 5

Основное практическое различие заключается в его использовании:

в security scenario, где нам всегда нужен новый сеанс, мы должны использовать request.getSession(true).

request.getSession(false): will return null if no session found.

Ответ 6

request.getSession() или request.getSession(true) возвращают только текущий сеанс. если текущий сеанс не будет существовать, он создаст новый сеанс.

Ответ 7

request.getSession(true) и request.getSession() оба делают одно и то же, но если мы используем request.getSession(false) вернет null, если объект сеанса еще не создан.