Sobes.tech
Junior

Co je Request Dispatcher?

sobes.tech AI

Odpověď od AI

RequestDispatcher je rozhraní v API Java Servlet, které se používá k přesměrování požadavku na jiný zdroj (například jiný servlet, JSP nebo HTML soubor) uvnitř stejné webové aplikace. Poskytuje dvě metody: forward() a include().

Metody:

  • forward(ServletRequest request, ServletResponse response):

    • Přenáší plnou kontrolu nad požadavkem a odpovědí na specifikovaný zdroj.
    • Původní servlet ukončí zpracování.
    • URL v adresním řádku prohlížeče se nezmění.
    • Používá se k úplnému delegování zpracování na jiný zdroj.
  • include(ServletRequest request, ServletResponse response):

    • Vloží obsah specifikovaného zdroje do odpovědi aktuálního servlety.
    • Původní servlet pokračuje ve vykonávání po vložení.
    • URL v adresním řádku prohlížeče se nezmění.
    • Umožňuje více zdrojům podílet se na tvorbě odpovědi.

Získání RequestDispatcher:

Lze získat buď z objektu ServletContext, nebo z objektu ServletRequest.

  • Z ServletContext:
    // context path - cesta k jinému zdroji v rámci aplikace
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/anotherServlet");
    
  • Z ServletRequest:
    // relativní cesta - relativní cesta k jinému zdroji
    RequestDispatcher rd = request.getRequestDispatcher("/anotherServlet");
    

Rozdíly mezi forward() a include():

Kritérium forward() include()
Řízení odpovědi Převádí úplně na cílový zdroj. Odpověď cílového zdroje je přidána k aktuální.
Vykonání Původní servlet ukončí vykonávání. Původní servlet pokračuje ve vykonávání.
URL Nemění se v adresním řádku prohlížeče. Nemění se v adresním řádku prohlížeče.
Použití Delegování zpracování, přesměrování. Vkládání obsahu, skládání odpovědi.

RequestDispatcher je důležitým nástrojem pro stavbu složitých webových aplikací, umožňuje strukturovat logiku zpracování požadavků a znovu využívat komponenty.