Sobes.tech
Junior

Mi az a Request Dispatcher?

sobes.tech MI

Válasz az MI-től

A RequestDispatcher egy interfész a Java Servlet API-ban, amelyet egy kérés átirányítására használnak egy másik erőforráshoz (például egy másik servlethez, JSP-hez vagy HTML-fájlhoz) ugyanazon webalkalmazáson belül. Két módszert kínál: forward() és include().

Módszerek:

  • forward(ServletRequest request, ServletResponse response):

    • Teljes irányítást ad a kérés és a válasz felett a megadott erőforráshoz.
    • Az eredeti servlet leállítja a feldolgozást.
    • A böngésző címsorában az URL nem változik.
    • Teljes feldolgozási feladat delegálására használják egy másik erőforrásnak.
  • include(ServletRequest request, ServletResponse response):

    • A megadott erőforrás tartalmát beilleszti a jelenlegi servlet válaszába.
    • Az eredeti servlet a beillesztés után folytatja a végrehajtást.
    • A böngésző címsorában az URL nem változik.
    • Lehetővé teszi több erőforrás részvételét a válasz létrehozásában.

RequestDispatcher beszerzése:

Vagy a ServletContext objektumból, vagy a ServletRequest-ből szerezhető be.

  • A ServletContext-ből:
    // context path - útvonal egy másik erőforráshoz az alkalmazáson belül
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/anotherServlet");
    
  • A ServletRequest-ből:
    // relatív útvonal - relatív útvonal egy másik erőforráshoz
    RequestDispatcher rd = request.getRequestDispatcher("/anotherServlet");
    

A forward() és include() közötti különbségek:

Kritérium forward() include()
Válasz irányítása Teljes mértékben átadódik a célerőforrásnak. A célerőforrás válasza hozzáadódik a jelenlegihez.
Végrehajtás Az eredeti servlet befejezi a végrehajtást. Az eredeti servlet folytatja a végrehajtást.
URL Nem változik a böngésző címsorában. Nem változik a böngésző címsorában.
Használat Feldolgozás delegálása, átirányítás. Tartalom beillesztése, válasz összeállítása.

A RequestDispatcher fontos eszköz összetett webalkalmazások építéséhez, lehetővé téve a kérésfeldolgozási logika strukturálását és az összetevők újrahasznosítását.