Como gerar uma pagina de status?

Boa tarde pessoal.
Minha duvida é a seguinte:
Gostaria de criar uma pagina que mostrasse a mensagem “processando” enquanto um servlet estivesse processando alguns calculos no back-end. Assim que o servlet terminasse ele chamaria uma pagina de sucesso quanquer.

Você pode fazer o seguinte Sérgio.

O mesmo servlet que vai fazer o processamento pode enviar uma mensagem de “Em processamento …” para o usuário. Por exemplo :

[code]
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Servlet1</title></head>");
out.println("<body>");
out.println(“

Aguarde processamento …

”);
out.println("</body></html>");
out.close();
for(int i=0; i<1000000; i++)
{
  //processamento demorado
}

//Quando terminar, o servlet redireciona para a página que irá exibir o resultado

RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
rd.forward(request,response);      

}[color=red][/color][code]

Masdeval, tentei implementar o servlet usando essa ideia, o problema é que quando out.close() é invocado ele passa todo o controle para a pagina e perde o bloco de processamento e o bloco do forward().
Se tiver um outro modo de fazer a pagina de staus não deixe de me dar um help.
T +

Amigo Sérgio, por um acaso vc conseguiu fazer esta mensagem de “Aguarde, Processando …” na tela ?

Estou precisando implementar isso.

Obrigado

Vimieiro

Acho que dá pra fazer usando AJAX (prototype por exemplo)

Tu iria chamar o um javascript que meteria um innerHTML “Processando…” num qualquer de sua pagina e mandaria a requisição via ajax para o seu servlet…

Acho que funcionaria sem problema algum…

Abraços

Eu pesquisei aqui no GUJ e estou tentando fazer como um colega sugeriu e é ± isso que vc está sugerindo :

No JS :

	function enviarTxtCemig(acao){
		document.getElementById(divStatus).innerHTML = '<img src='${pageContext.request.contextPath}/images/ajax-loader.gif'></img>';
		document.forms[0].acao.value = acao;
		if (verificaTxtCemig()){
			document.forms[0].submit();
			}
		else{ 
			return false;
		}
		document.getElementById(divStatus).innerHTML = ""; 		
	}

Mas não quer nem rodar e não sei por quê !!!???
:frowning: :frowning:

vimieiro

abs

Amigo, faça assim… baixe o protorype adicione no seu HTML e faça uma função mais ou menos assim:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
    <title>Minah Pagina</title>
    <script type="text/javascript" src="prototype.js"></script>
    <script type="text/javascript">
        function getPagina() {      
            new Ajax.Request('NomeDoMeuServlet.jsp', {
                onCreate: function(){
                    $('contServlet').innerHTML = '<img src="${pageContext.request.contextPath}/images/ajax-loader.gif" />';
                },
                onSuccess: function(transport) {
                    $('contServlet').innerHTML = transport.responseText;
                }
            });
        }
    </script>
</head>
<body>
    <a href="#" onclick="getPagina();">Abrir meu servlet</a><br>
    <!-- Abaixo será mostrado o conteúdo do teu servlet, ou seja, se ele retornar um html, será mostrado abaixo -->
    <div id="contServlet"></div>
</body>
</html>

Cara vê se isto te ajuda… No exemplo ele irá requisitar o teu servlet, não sei se é isto que vc precisa… se no teu caso for enviar um formulario para o servlet processar e retornar o resultado de um calculo, vc pode fazer assim:

        function getPagina() {      
            url = 'NomeDoMeuServlet.jsp?'+ $('NomeDoForm').serialize();
            new Ajax.Request(url, {
                onCreate: function(){
                    $('contServlet').innerHTML = '<img src="${pageContext.request.contextPath}/images/ajax-loader.gif" />';
                },
                onSuccess: function(transport) {
                    $('contServlet').innerHTML = transport.responseText;
                }
            });
        }

Neste caso o teu servlet deverá imprimir por out.print o resultado do teu cálculo…

Teste lá brother…