TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #544 6.8K
📌 Что такое Request Dispatcher?

💬 Спрашивают в 6 % собеседований

RequestDispatcher — это интерфейс в Java Servlet API, который используется для передачи запроса от одного сервлета к другому ресурсу на сервере, например, к другому сервлету, JSP-странице или статическому файлу (HTML, изображение и т.д.). RequestDispatcher позволяет реализовать механизм включения или пересылки запросов и ответов.

🤔 Основные функции `RequestDispatcher`:

1️⃣ Перенаправление запроса (Forwarding):

➕ Передает управление другому ресурсу на сервере без участия клиента. В этом случае URL в браузере не меняется.

2️⃣ Включение ресурса (Including):

➕ Включает содержимое другого ресурса в ответ текущего запроса. Это позволяет комбинировать вывод нескольких ресурсов.

🤔 Методы `RequestDispatcher`:

1️⃣ `forward(ServletRequest request, ServletResponse response)`: Перенаправляет запрос и ответ от одного сервлета к другому ресурсу на сервере.
   RequestDispatcher dispatcher = request.getRequestDispatcher("targetResource");
dispatcher.forward(request, response);


2️⃣ `include(ServletRequest request, ServletResponse response)`: Включает содержимое другого ресурса в ответ текущего запроса.
   RequestDispatcher dispatcher = request.getRequestDispatcher("targetResource");
dispatcher.include(request, response);


🤔 Как получить объект `RequestDispatcher`:

Объект RequestDispatcher можно получить через методы getRequestDispatcher(String path) или getNamedDispatcher(String name) у объекта ServletRequest или ServletContext.

➕ Использование `ServletRequest` для получения `RequestDispatcher`:
  RequestDispatcher dispatcher = request.getRequestDispatcher("/path/to/resource");


➕ Использование `ServletContext` для получения `RequestDispatcher`:
  ServletContext context = getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/path/to/resource");


🤔 Примеры использования `RequestDispatcher`:

➕ Пример перенаправления (forward):
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;

public class ForwardServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Логика обработки запроса

// Перенаправление на другой ресурс
RequestDispatcher dispatcher = request.getRequestDispatcher("targetResource.jsp");
dispatcher.forward(request, response);
}
}


➕ Пример включения (include):
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;

public class IncludeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Логика обработки запроса

// Включение другого ресурса
RequestDispatcher dispatcher = request.getRequestDispatcher("header.jsp");
dispatcher.include(request, response);

// Основной контент
response.getWriter().println("<h1>Main Content</h1>");

// Включение другого ресурса
dispatcher = request.getRequestDispatcher("footer.jsp");
dispatcher.include(request, response);
}
}


🤔 Итог:

RequestDispatcher используется для перенаправления запросов и включения содержимого других ресурсов на сервере, что позволяет более гибко и эффективно организовывать обработку запросов и формирование ответов в веб-приложениях.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
  • 👍 3
  • 🤯 2
  • ❤ 1
More from @easy_java_ru
  1. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  2. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  3. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  4. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  5. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
  6. Oct 7, 2026🤔 К какой категории сущности относится Primary Key? Primary Key (первичный ключ) в базах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →