it-swarm.com.ru

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

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

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

request.getSession():

«или если в запросе нет сеанса, создает один»

request.getSession(true):

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

Я не понимаю разницу между ними: разве они (если их нет) создают новую сессию, но первая не return, а вторая?

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

Правка:

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

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

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

32
Ali Khan

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

33
Jan

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

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

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

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

58
Ranjitsinh

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

  request.getSession(true);

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

  request.getSession(false);

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

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

  request.getSession();

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

5
Ruby Kannan

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

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

Session session = doGetSession(true);
4
mike

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

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

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

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

0
CRR