Dúvida sobre sendRedirect

9 respostas
E

Estou chamando o método response.sendRedirect no doGet do meu Servlet e a página que estou passando de parâmetro está sendo chamada corretamente, porém, gostaria que a URL no browser continuasse aparecendo o meu Servlet e não a URL da página redirecionada. Como faço isto?

9 Respostas

Hebert_Coelho

Tente chamar por doPost ao invés de doGet. Acho que funciona.

drsmachado

Peraí, se ele estiver trabalhando com qualquer coisas que não seja um formulário, não tem opção de escolha (um <a href. por exemplo).

E

Eu tentei, mas o método doPost não é chamado. Veja como estou fazendo:

@WebServlet("/Teste")
public final class Teste extends HttpServlet {

 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.print("Get");
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.print("Post");
		response.sendRedirect("Pagina.html");
	}

}
Hebert_Coelho

E como você está chamando?

drsmachado
eliflavio:
jakefrog:
Tente chamar por doPost ao invés de doGet. Acho que funciona.

Eu tentei, mas o método doPost não é chamado. Veja como estou fazendo:

@WebServlet("/Teste")
public final class Teste extends HttpServlet {

 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.print("Get");
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.print("Post");
		response.sendRedirect("Pagina.html");
	}

}
Essa chamada ao servlet é feita através de link?
E

drsmachado:

Essa chamada ao servlet é feita através de link?

Sim, é o link do Servlet, quando ele é chamado quero redirecionar para uma página mas quero que continue aparecendo a URL do Servlet no browser. Consegui fazer funcionar desta forma:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   getServletContext().getRequestDispatcher("/Pagina.html").forward(request, response);
}
Hebert_Coelho

Já que funcionou blz.

Você tb poderia no seu método doGet chamar o doPost. [=

E

jakefrog:
Já que funcionou blz.

Você tb poderia no seu método doGet chamar o doPost. [=

Obrigado pela ajuda

drsmachado

eliflavio:
jakefrog:
Já que funcionou blz.

Você tb poderia no seu método doGet chamar o doPost. [=

Obrigado pela ajuda

Mas chamar o método doPost não iria alterar a URL mostrada.
O problema era o response.sendRedirect, afinal, ele irá invocar a nova página a ser aberta (seja jsp ou servlet) e proseguir tudo a partir dela.
O forward do requestDispatcher funciona semelhante, mas mantém a execução do ponto anterior, ou seja, da servlet que invocou a nova página.

Criado 26 de dezembro de 2011
Ultima resposta 26 de dez. de 2011
Respostas 9
Participantes 3