¿Cómo puedo transmitir la salida de texto a la página en el navegador para mostrar el progreso de una operación que puede tomar entre 15 y 20 segundos? He intentado escribir directamente en la secuencia de salida de HttpServletResponse
, pero el usuario sigue viendo la salida completa después de que haya finalizado todo el proceso.Cómo transmitir la respuesta de texto desde una aplicación de Java Spring MVC 3.0
Esto es lo que he probado hasta ahora
@RequestMapping(value = "/test")
public void test(HttpServletResponse response)
throws IOException, InterruptedException {
response.getOutputStream().println("Hello");
response.getOutputStream().flush();
Thread.sleep(2000);
response.getOutputStream().println("How");
response.getOutputStream().flush();
Thread.sleep(2000);
response.getOutputStream().println("are");
response.getOutputStream().flush();
Thread.sleep(2000);
response.getOutputStream().println("you");
response.getOutputStream().flush();
}
¿Ha probado lavar la salida de salida después de enviar cada plato de datos? – Luciano
@Luciano He agregado lo que he intentado hasta ahora a la pregunta. Esto no funciona cuando veo la página de Chrome – Danish
Creo que la mejor opción sería un enfoque diferente: use un temporizador en javascript que busque datos de/prueba cada 1 segundo (o medio segundo), usando ajax, y/la prueba devolvería lo que no se haya enviado antes hasta el momento en que se llamó. – Luciano