sendRedirect()
método redireciona a resposta para outro recurso. Esse método realmente faz com que o cliente(navegador) crie uma nova solicitação para chegar ao recurso. O cliente pode ver o novo url no navegador.
sendRedirect () aceita URL relativa, para que ele possa ir para recursos dentro ou fora do servidor.
Servlet: sendRedirect() e Request Dispatcher
A principal diferença entre um redirecionamento e uma solicitação de despacho é que, redirecionamento faz com que o cliente(navegador) criar uma nova solicitação para obter o recurso, o usuário pode ver o novo URL, enquanto o pedido de expedição de receber o recurso na mesma solicitação e URL não muda.
além disso, outra diferença muito importante é que, sendRedirect() funciona no objeto de resposta enquanto o envio de solicitação funciona no objeto de solicitação.
Exemplo que demonstra o 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(); } }}
Diferença entre forward() e sendRedirect()
forward() | sendRedirect() |
---|---|
Ele funciona no lado do servidor. | funciona no lado do cliente. |
ele sempre envia o mesmo objeto de solicitação e resposta. | ele sempre envia uma nova solicitação para o objeto. |
ele só funciona dentro do servidor. | ele funciona dentro e fora do servidor. |
nesse método, todo o processamento é tratado internamente pelo contêiner da web. | neste método, todo o processamento é tratado por outro servlet. |
é mais rápido. | é mais lento. |
usando forward () endereço do método pode ser visto na barra de endereços. | usando forward () endereço do método não pode ser visto na barra de endereços. |
a interface RequestDispatcher é usada para declaração. | HttpServletResponse é usado para declaração. |
é muito útil no padrão de design MVC para ocultar o acesso direto. | não é útil no padrão de design MVC ocultar o acesso direto. |
ele reutiliza o objeto. | não reutiliza o objeto. |
exemplo: solicitação.getRequestDispacher (“servlet_1”).forward (request response); | exemplo: resposta.sendRedirect(“Servlet_1”); |