sendRedirect()
el método redirige la respuesta a otro recurso. Este método hace que el cliente (navegador) cree una nueva solicitud para acceder al recurso. El cliente puede ver la nueva url en el navegador.
sendRedirect() acepta URL relativas, por lo que puede buscar recursos dentro o fuera del servidor.
Servlet: sendRedirect() y Despachador de solicitudes
La principal diferencia entre una redirección y un despacho de solicitudes es que, la redirección hace que el cliente(navegador) cree una nueva solicitud para llegar al recurso, el usuario puede ver la nueva URL mientras que el despacho de solicitudes obtiene el recurso en la misma solicitud y URL no cambia.
Además, otra diferencia muy importante es que sendRedirect () funciona en el objeto de respuesta, mientras que el envío de solicitudes funciona en el objeto de solicitud.
este Ejemplo demuestra el uso de sendRedirect()
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { response.sendRedirect("https://www.studytonight.com"); } finally { out.close(); } }}
Diferencia entre forward() y sendRedirect()
forward() | sendRedirect() |
---|---|
funciona en el lado del servidor. | Funciona en el lado del cliente. |
Siempre envía el mismo objeto de solicitud y respuesta. | Siempre envía una nueva solicitud para el objeto. |
Solo funciona dentro del servidor. | funciona tanto dentro como fuera del servidor. |
En este método, todo el procesamiento es manejado internamente por el contenedor web. | En este método, todo el procesamiento es manejado por otro servlet. |
es más rápido. | es más lento. |
Usando el método forward (), la dirección se puede ver en la barra de direcciones. | No se puede ver la dirección del método forward() en la barra de direcciones. |
La interfaz RequestDispatcher se utiliza para la declaración. | HttpServletResponse se utiliza para la declaración. |
Es muy útil en el patrón de diseño MVC para ocultar el acceso directo. | No es útil en el patrón de diseño MVC ocultar el acceso directo. |
reutiliza el objeto. | No reutiliza el objeto. |
Ejemplo: solicitud.getRequestDispacher («servlet_1»).reenviar (respuesta de solicitud); | Ejemplo: respuesta.sendRedirect(«Servlet_1»); |