RESSOLVIDO - Barra de Progresso com RequestDispatcher include usando servlet

Minha ideia era fazer dentro de um iframe, um form que chamasse um servlet…
esse servlet atualizaria a cada loop de um for (processamento), um jsp dentro do iframe…
esse jsp recebe um paremetro porcentagem e monta o grafico da barra de progresso…

mas ao ler um pouco, ercebi que o sendRedirect do response soó pode ser chamado uma vez…
percebi tambem que o include do requestdispatcher so mostra o resultado das solicitacoes no final do processo…

preciso que essa tela com a barra de progresso seja atualizada a cada loop de um for na servlet…

alguma dica??? alguma luz por onde possa seguir???

lauronolasco, você pode, dentro de um loop no código Java, atribuir um atributo à sessão com o percentual.

E usando a função setInterval do javascript, fazer uma chamada via XML que lê esse atributo a cada X segundos e atualiza a barra pra você.

mas é realmente impossível atualizar a pagina com o objeto response ,ais de u,a vez???
ou há como fazer?

Vou partir do princípio que está usando só jsp e servlet.

Use a seguinte função javascript:

function executarXML(link) {
var retorno = “”;
if (isNetscape || isMozilla) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open(“POST”,link, false);
} else if (isIE) {
xmlHttp = new ActiveXObject(‘Microsoft.XMLHTTP’);
xmlHttp.Open(“POST”,link, false);
}
retorno = xmlHttp.responseText;
eval(retorno);
}

Onde link é uma chamada válida pro seu Servlet, pra um método que pegue o atributo da sessão. Aí é só você retornar algo do tipo:

document.getElementById(“nomeDaDiv”).innerHTML = “

Carregando…
”;

Onde 50% é a percentual do andamento que está no atributo da sessão.

Bom, é um exemplo só pra dar uma idéia e sem usar nenhuma outra ferramenta.

resolvi de uma forma alternativa…

na minha aplicacao eu tenho um Vector static, de usuarios conectados…
criei um subobjeto na classe Usuario chamado Processo, que contem alguns atributos, dentre eles o percentual processado…
tenho um popup que quando abre chama o servlet, que redireciona para um jsp, que se atualiza a cada 1 segundo com javascript ( setTimeout(‘atualizar()’,1000); )…
e quando chega aos 100% nao atualiza mais…

resolveu o problema tranquilo… mas obrigado pela dica do xml… valeu mesmo

Por nada. Esse é o bacana, sempre tem uma solução legal e inteligente pro problema que temos :smiley: