Junior
Czym jest Request Dispatcher?
sobes.tech AI
Odpowiedź od AI
RequestDispatcher jest interfejsem w API Servlet Java, używanym do przekierowania żądania do innego zasobu (np. innego serwletu, JSP lub pliku HTML) w ramach tej samej aplikacji internetowej. Udostępnia dwie metody: forward() i include().
Metody:
-
forward(ServletRequest request, ServletResponse response):- Przekazuje całą kontrolę nad żądaniem i odpowiedzią do określonego zasobu.
- Oryginalny serwlet kończy przetwarzanie.
- URL na pasku adresu przeglądarki nie zmienia się.
- Służy do całkowitego delegowania obsługi innemu zasobowi.
-
include(ServletRequest request, ServletResponse response):- Włącza zawartość określonego zasobu do odpowiedzi bieżącego serwletu.
- Oryginalny serwlet kontynuuje działanie po włączeniu.
- URL na pasku adresu przeglądarki nie zmienia się.
- Pozwala wielu zasobom uczestniczyć w tworzeniu odpowiedzi.
Uzyskanie RequestDispatcher:
Można go uzyskać albo z obiektu ServletContext, albo z obiektu ServletRequest.
- Z
ServletContext:// ścieżka kontekstowa - ścieżka do innego zasobu w ramach aplikacji RequestDispatcher rd = getServletContext().getRequestDispatcher("/anotherServlet"); - Z
ServletRequest:// ścieżka względna - względna ścieżka do innego zasobu RequestDispatcher rd = request.getRequestDispatcher("/anotherServlet");
Różnice między forward() a include():
| Kryterium | forward() |
include() |
|---|---|---|
| Kontrola nad odpowiedzią | Całkowite przekazanie do docelowego zasobu. | Odpowiedź zasobu docelowego jest dodawana do bieżącej. |
| Wykonanie | Oryginalny serwlet kończy działanie. | Oryginalny serwlet kontynuuje działanie. |
| URL | Nie zmienia się na pasku adresu przeglądarki. | Nie zmienia się na pasku adresu przeglądarki. |
| Użycie | Delegacja obsługi, przekierowanie. | Dołączenie zawartości, kompozycja odpowiedzi. |
RequestDispatcher jest ważnym narzędziem do budowania złożonych aplikacji webowych, umożliwiającym strukturyzację logiki obsługi żądań i ponowne użycie komponentów.