junior
Как из одного сервлета вызвать другой сервлет
Для вызова сервлета в рамках одного приложения используется RequestDispatcher с методами forward() (делегирование) или include() (включение контента). Для вызова сервлета в другом приложении или на другом сервере используется sendRedirect().
| Способ | Когда использовать |
|---|---|
RequestDispatcher.forward() |
Передать обработку другому сервлету в том же приложении |
RequestDispatcher.include() |
Включить результат другого сервлета в текущий ответ |
HttpServletResponse.sendRedirect() |
Перенаправить клиента на другой URL (в том числе внешний) |
Для передачи данных между сервлетами в рамках одного запроса используются атрибуты: request.setAttribute("key", value) в первом сервлете и request.getAttribute("key") во втором. При sendRedirect() передать данные можно через query-параметры URL или cookies, так как это новый запрос.
На собеседовании: покажите, что понимаете разницу:
forward()/include()— серверная маршрутизация (один HTTP-запрос),sendRedirect()— клиентская (два HTTP-запроса).