JSP ao atualizar pagina o form é reenviado

Tenho uma tela de cadastro simples que chama uma servlet através de um método post. Na servlet
o método doPost faz o seu trabalho e termino o método com esse carinha abaixo:

	RequestDispatcher rd = request.getRequestDispatcher("/contato-adicionado.jsp");
	rd.forward(request,response);

Nada surpreendente ate aqui… porem quando atualizo a pagina “contato-adicionado.jsp” no browser o form da pagina de cadastro é reenviado e cadastro é feito novamente.
É possível modificar este comportamento?

Agradeço desde já!

freakazoid,

Esse é o comportamento esperado quando você utiliza o comando:

RequestDispatcher rd = request.getRequestDispatcher("/contato-adicionado.jsp");  
rd.forward(request,response);

Porque o Browser não sabe que aconteceu esse redirecionamento, então se você atualiza a pagina o Browser vai realizar o ultimo request que no caso foi o POST.
Para contornar a situação utilize o comando abaixo, basicamente a diferença entre eles é que no comando abaixo o Browser que faz o redirecionamento e não o servidor conforme dito anteriormente.
Se você reparar a url do seu Browser essa modificação será observada, pois do modo que você esta fazendo a url não será alterada, já no modo que te passe a URL será alterada.

response.sendRedirect("/contato-adicionado.jsp");

Espero que tenha ajudado !

Att,

[quote=magnocosta]freakazoid,

Esse é o comportamento esperado quando você utiliza o comando:

RequestDispatcher rd = request.getRequestDispatcher("/contato-adicionado.jsp");  
rd.forward(request,response);

Porque o Browser não sabe que aconteceu esse redirecionamento, então se você atualiza a pagina o Browser vai realizar o ultimo request que no caso foi o POST.
Para contornar a situação utilize o comando abaixo, basicamente a diferença entre eles é que no comando abaixo o Browser que faz o redirecionamento e não o servidor conforme dito anteriormente.
Se você reparar a url do seu Browser essa modificação será observada, pois do modo que você esta fazendo a url não será alterada, já no modo que te passe a URL será alterada.

response.sendRedirect("/contato-adicionado.jsp");

Espero que tenha ajudado !

Att,[/quote]

magnocosta obrigado pela resposta!

substitui o ResquestDispatcher por response.sendRedirect("/contato-adicionado.jsp"), porem a agora recebo 404 na pagina contato-adicionado.jsp javascript:emoticon(’:?’);
Na pagina “contato-adicionado.jsp” deixei apenas uma mensagem de “sucesso” e mesmo assim não funciona.

Alguma ideia?

Segue abaixo o código:

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

	//monta objeto e chama as regras de negocio........

			response.sendRedirect("/contato-adicionado.jsp"); 
			
	}

contato-adicionado.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    	Contato adicionado com sucesso!
</body>
</html>

A pagina “contato-adicionado.jsp” está dentro de alguma pasta ou está da pasta raiz da aplicação ?
Se ela estiver dentro de alguma pasta essa pasta deve ser adicionada no caminho, como o exemplo abaixo:

RequestDispatcher rd = request.getRequestDispatcher("contato/contato-adicionado.jsp");    
rd.forward(request,response);  

Att,

Descobri o bug aqui

a ‘/’ do response.sendRedirect("/contato-adicionado.jsp"); que estava atrapalhando…

Bombardeie a contato-adicionado.jsp de F5 e aconteceu aquilo que vc havia dito.

Obrigado pela ajuda!

Abs