Для вызова одного сервлета из другого используются механизмы RequestDispatcher.
Есть два основных способа:
forward(): Передает управление другому ресурсу (сервлету, JSP или HTML). Запрос и ответ остаются теми же самыми. URL в адресной строке браузера не меняется.
java
Использование:
response.getWriter().write(...)).include(): Включает содержимое другого ресурса в текущий ответ. Управление временно передается другому ресурсу, который обрабатывается, а затем управление возвращается обратно в вызывающий сервлет. URL в адресной строке браузера не меняется.
java
Использование:
URL-путь, указанный в getRequestDispatcher(), может быть относительным или абсолютным относительно контекста приложения. Например:
/anotherServlet: Путь относительно корня контекста приложения.anotherServlet: Путь относительно текущего сервлета (не рекомендуется, так как может быть неочевидным).Важно: Нельзя использовать response.sendRedirect() для "вызова" другого сервлета в том же смысле, что forward() или include(). sendRedirect() отправляет HTTP перенаправление клиенту (браузеру), который затем делает новый запрос к указанному URL. При этом теряются все атрибуты запроса, и создается новый цикл запрос-ответ.