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.