Servlet – RequestDispatcher

RequestDispatcher es una interfaz que viene en el paquete javax.servlet . Usando esta interfaz, obtenemos un objeto en el servlet después de recibir la solicitud. Usando el objeto RequestDispatcher, enviamos una solicitud a otros recursos que incluyen ( servlet, archivo HTML o archivo JSP ). Se puede usar un objeto RequestDispatcher para reenviar una solicitud al recurso o para incluir el recurso en una respuesta. El recurso puede ser dinámico o estático.

¿Cómo crear un objeto de RequestDispatcher?

Hay tres formas de obtener un objeto:

1. RequestDispatcher requestDispatcher=ServletContext.getRequestDispatcher(String path);

Descripción:

  • interfaz pública ServletContext . Define un conjunto de métodos que utiliza un servlet para comunicarse con su contenedor de servlet.
  • ruta es una string que especifica la ruta de acceso al recurso (servlet, archivo HTML o archivo JSP).

2. RequestDispatcher requestDispatcher=ServletContext.getNamedDispatcher(String name);

Descripción:

  • interfaz pública ServletContext . Define un conjunto de métodos que utiliza un servlet para comunicarse con su contenedor de servlet.
  • name es una string que especifica el nombre de un servlet para envolver.

3. RequestDispatcher requestDispatcher=request.getRequestDispatcher(“String path”);

Descripción:

  • request es el objeto de tipo HttpServletRequest.
  • ruta es una string que especifica la ruta de acceso al recurso. Si es relativo, debe ser relativo al servlet actual.

Método y descripción 

La clase contiene dos métodos :

1. adelante

Sintaxis:

anular adelante (solicitud de ServletRequest, respuesta de ServletResponse) lanza ServletException, IOException

Descripción:

  • Modificador y Tipo:- void
  • Este método se utiliza para reenviar una solicitud de un servlet a otro recurso (servlet, archivo JSP o archivo HTML) en el servidor.
  • Se llama al método antes de que se haya enviado la respuesta al cliente. Si la respuesta ya se envió, el método arrojará una IllegalStateException.
  • La solicitud de parámetro (tipo HttpServletRequest) y la respuesta (tipo HttpServletResponse) son los mismos objetos que se pasaron al método de servicio del servlet de llamada.
  • Este método establece el tipo de distribuidor de la solicitud dada en DispatcherType.FORWARD.

Ejemplo: 

Java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class GFG extends HttpServlet {
    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
    {
        // Perform all the work as per your
          // application's architecture
        try {
            RequestDispatcher requestDispatcher;
 
            // path is a string specifying the pathname to
            // the resource. If it is relative, it must be
            // relative against the current servlet
            requestDispatcher=request.getRequestDispatcher("path");
            requestDispatcher.forward(request, response);
        }
        catch (ServletException servletException) {
        }
        catch (IOException ioException) {
        }
        catch (IllegalStateException illegalStateException) {
        }
    }
}

Nota : el código anterior no se ejecutará en IDE en línea, este es un código del lado del servidor.

2. incluir

Sintaxis:

void include (solicitud de ServletRequest, respuesta de ServletResponse) arroja ServletException, IOException

Descripción:

  • Modificador y Tipo:- void
  • Este método se usa para incluir la respuesta del recurso (para el cual la solicitud pasó el servlet, la página JSP, el archivo HTML) en la respuesta del servlet actual.
  • La solicitud de parámetro (tipo HttpServletRequest) y la respuesta (tipo HttpServletResponse) son los mismos objetos que se pasaron al método de servicio del servlet de llamada.
  • Este método establece el tipo de distribuidor de la solicitud dada en DispatcherType.INCLUDE.

Ejemplo: 

Java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class GFG extends HttpServlet {
    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
    {
        // Perform all the work as
        // per your application's architecture
        try {
            RequestDispatcher requestDispatcher;
 
            // path is a string specifying the pathname to
            // the resource. If it is relative, it must be
            // relative against the current servlet
            requestDispatcher=request.getRequestDispatcher("path");
            requestDispatcher.include(request, response);
        }
        catch (ServletException servletException) {
        }
        catch (IOException ioException) {
        }
    }
}

Nota : el código anterior no se ejecutará en IDE en línea, este es un código del lado del servidor.

Campos y Descripción 

Escribe

Nombre del campo

Descripción

string estática  FORWARD_REQUEST_URI La string contiene el nombre del atributo de solicitud bajo el cual el URI de solicitud original está disponible para el destino de un reenvío.
string estática  FORWARD_CONTEXT_PATH La string contiene el nombre del atributo de solicitud bajo el cual la ruta de contexto original está disponible para el destino de un reenvío.
string estática  FORWARD_PATH_INFO La string contiene el nombre del atributo de solicitud bajo el cual la información de ruta original está disponible para el destino de un reenvío.
string estática  FORWARD_SERVLET_PATH La string contiene el nombre del atributo de solicitud bajo el cual la ruta del servlet original está disponible para el destino de un reenvío.
string estática  FORWARD_QUERY_STRING La string contiene el nombre del atributo de solicitud bajo el cual la string de consulta original se pone a disposición del destino de un reenvío.
string estática  INCLUDE_REQUEST_URI La string contiene el nombre del atributo de solicitud bajo el cual se almacena el URI de solicitud del destino de inclusión.
string estática  INCLUDE_CONTEXT_PATH La string contiene el nombre del atributo de solicitud bajo el cual se almacena la ruta de contexto del destino de un include.
string estática  INCLUDE_RUTA_INFO La string contiene el nombre del atributo de solicitud bajo el cual se almacena la información de ruta del destino de un include.
string estática  INCLUDE_SERVLET_PATH La string contiene el nombre del atributo de solicitud bajo el cual se almacena la ruta del servlet del destino de un include.
string estática  INCLUDE_QUERY_STRING La string contiene el nombre del atributo de solicitud bajo el cual se almacena la string de consulta del destino de un include.
string estática  ERROR_EXCEPCIÓN La string contiene el nombre del atributo de solicitud bajo el cual se propaga el objeto de excepción durante un envío de error.
string estática  ERROR_EXCEPCIÓN_TIPO La string contiene el nombre del atributo de solicitud bajo el cual se propaga el tipo del objeto de excepción durante un envío de error.
string estática  MENSAJE DE ERROR La string contiene el nombre del atributo de solicitud bajo el cual se propaga el mensaje de excepción durante un envío de error.
string estática  ERROR_REQUEST_URI La string contiene el nombre del atributo de solicitud bajo el cual se propaga el URI de solicitud cuyo procesamiento provocó el error durante un envío de error.
string estática  ERROR_SERVLET_NOMBRE La string contiene el nombre del atributo de solicitud bajo el cual se propaga el nombre del servlet en el que se produjo el error durante un envío de error.
string estática  ERROR_STATUS_CODE La string contiene el nombre del atributo de solicitud bajo el cual se propaga el estado de respuesta durante un envío de error.

Publicación traducida automáticamente

Artículo escrito por sharmaharsh_05 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *