No siempre un Servlet estará codificado para atender a una petición. Sino que muchas veces y por muchos motivos tendrá que reenviar la petición para que la siga procesando otro Servlet. En este ejemplo vamos a ver cómo reenviar petición a otro Servlet.
Uno de estos casos claros es cuándo estamos implementando un patrón Controller. Donde ese punto de acceso encaminará las peticiones a diferentes Servlets. Para encaminar la petición necesitaremos de una simple línea de código.
Pero lo primero será codificar el método .doGet()
que es el que recibirá la petición y desde el sitio a donde interceptaremos la petición para poder encaminarla hacía otro Servlet.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... }
Lo siguiente será implementar el encaminamiento mediante una línea de código. En esta línea recuperaremos el manejador de uno de los Servlets de la aplicación web y le reenviaremos los objetos petición, representado por el objeto HttpServletRequest
, y respuesta, representado por el objeto HttpServletResponse
, para que los maneje.
Para poder reenviar la petición utilizaremos el método forward(request, response)
del objeto RequestDispatcher
:
El código de nuestro programa Java nos quedaría de la siguiente forma:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("NombreDelServlet") .forward(request, response); }
Es importante saber cómo se llama el Servlet al que encaminamos la petición. Ya que el nombre de este Servlet será el parámetro que reciba el método .getRequestDispatcher()
.