Come è possibile eseguire il flusso di output del testo sulla pagina del browser per mostrare l'avanzamento di un'operazione che potrebbe richiedere circa 15 - 20 secondi? Ho provato a scrivere direttamente nel flusso di output di HttpServletResponse
, ma l'utente continua a vedere l'intero output dopo il l'intero processo è terminato.Come eseguire il flusso di risposta del testo da un'applicazione Web Java Spring MVC 3.0
questo è quello che ho provato finora
@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();
}
Avete provato a svuotare il flusso di uscita dopo ogni chuck di dati viene inviato? – Luciano
@ Luciano Ho aggiunto quello che ho provato fino ad ora alla domanda. Questo non funziona quando visualizzo la pagina da Chrome – Danish
Penso che la tua migliore scommessa sarebbe un approccio diverso: usa un timer in javascript che preleva dati da/test ogni 1 secondo (o mezzo secondo), usando ajax, e/il test restituiva ciò che non è stato inviato prima che venisse chiamato. – Luciano