Вопрос с собеседования · Spring

Чем forward отличается от redirect?

MiddleСервлеты и фильтрыSpring
Ещё спрашивают так:
  • Меняется ли URL при forward?
Коротко

Forward — внутренняя передача запроса другому обработчику в том же запросе: URL в браузере не меняется, атрибуты запроса сохраняются. Redirect — ответ 302/303 с Location: браузер делает новый запрос по новому адресу.

  • Forward — только внутри приложения, один запрос
  • Redirect — можно на другой сайт, два запроса, данные — через URL или flash-атрибуты
  • После POST — redirect (Post/Redirect/Get)

А ещё В Spring MVC: "forward:/path" и "redirect:/path"

Подробно

Из механики следуют практические различия. forward дешевле (нет второго обращения к серверу) и сохраняет атрибуты запроса, но работает только внутри того же контекста — на внешний адрес переадресовать так нельзя. redirect дороже, зато меняет адресную строку, что решает классическую проблему повторной отправки формы по F5: после обработки POST делают redirect на GET. Поскольку redirect создаёт новый запрос, обычные атрибуты не переживают переход, и для однократной передачи данных существуют flash-атрибуты, живущие в сессии до следующего запроса.

Что хотят услышать

  • Различия по числу запросов, URL, области.
  • Когда что использовать.

Частые ошибки

  • Отвечать на POST рендерингом страницы вместо redirect и получать дубли при обновлении.
  • Пытаться пробросить атрибуты запроса через redirect обычным способом.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓forward — на сервере в рамках одного запроса, URL в браузере не меняется
  • ✓redirect — ответ 3xx, и браузер делает новый запрос по новому адресу
  • ✓При redirect атрибуты запроса теряются — их передают flash-атрибутами
  • ✗forward можно выполнить на внешний домен: сервер сам запросит страницу и вернёт её клиенту как свою

Что спросят дальше

  • Что такое паттерн POST/Redirect/GET?
  • Где физически живут flash-атрибуты?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования