Прочитайте JavaDocs, он ясно говорит:
Это говорит, request.getSession ()
Возвращает текущий сеанс, связанный с этим запросом, или еслиу запроса нет сеанса, он создается.
И другой вариант request.getSession (isCreate)
Возвращает текущий HttpSession, связанный с этим запросом или, если текущий сеанс отсутствуети create - true, возвращает новый сеанс.
Если create - false, а в запросе отсутствует действительный HttpSession, этот метод возвращает ноль.
Чтобы убедиться, что сеансправильно поддерживается, вы должны вызвать этот метод, прежде чем ответ будет зафиксирован.Если контейнер использует куки-файлы для поддержания целостности сеанса, и ему предлагается создать новый сеанс после подтверждения ответа, генерируется исключение IllegalStateException.
Обновление
В небольшом исследовании я обнаружил, что сессия не создана, если не вызывается request.getSession()
где .Поскольку, The servlet container uses this interface to create a session between an HTTP client and an HTTP server.
Есть хорошие шансы, что ваш контейнер сервлетов создаст для вас Session по умолчанию.
см.:
- Java Doc HttpSession
- Обсуждение JavaRaunch: автоматически ли создается HttpSession?
Но, чтобы быть более безопасным, используйте request.getSession()
для получения сеанса и используйтеrequest.getSession(false)
только когда вам нужно проверить, был ли сеанс уже создан.