Sobes.tech
Junior

O que é o Request Dispatcher?

sobes.tech IA

Resposta da IA

RequestDispatcher é uma interface na API Servlet Java, usada para redirecionar uma solicitação para outro recurso (por exemplo, outro servlet, JSP ou arquivo HTML) dentro da mesma aplicação web. Ela fornece dois métodos: forward() e include().

Métodos:

  • forward(ServletRequest request, ServletResponse response):

    • Transfere todo o controlo da solicitação e resposta para o recurso especificado.
    • O servlet original deixa de processar.
    • A URL na barra de endereços do navegador não muda.
    • É usado para delegar completamente o processamento a outro recurso.
  • include(ServletRequest request, ServletResponse response):

    • Inclui o conteúdo do recurso especificado na resposta do servlet atual.
    • O servlet original continua a execução após a inclusão.
    • A URL na barra de endereços do navegador não muda.
    • Permite que múltiplos recursos participem na criação da resposta.

Obtenção de RequestDispatcher:

Pode obtê-lo a partir do objeto ServletContext ou do objeto ServletRequest.

  • De ServletContext:
    // context path - caminho para outro recurso dentro da aplicação
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/anotherServlet");
    
  • De ServletRequest:
    // caminho relativo - caminho relativo a outro recurso
    RequestDispatcher rd = request.getRequestDispatcher("/anotherServlet");
    

Diferenças entre forward() e include():

Critério forward() include()
Controlo da resposta Transfere completamente para o recurso destino. A resposta do recurso destino é adicionada à atual.
Execução O servlet original termina a execução. O servlet original continua a execução.
URL Não muda na barra de endereços do navegador. Não muda na barra de endereços do navegador.
Uso Delegação do processamento, redirecionamento. Inclusão de conteúdo, composição de resposta.

RequestDispatcher é uma ferramenta importante para construir aplicações web complexas, permitindo estruturar a lógica de processamento de requisições e reutilizar componentes.