Jak mogę strumienia wyjściowego tekstowy do strony w przeglądarce, aby pokazać postęp operacji, która może zająć około 15 - 20 sekund? Próbowałem wypisać bezpośrednio do strumienia wyjściowego HttpServletResponse
, ale użytkownik nadal widzi pełną wydajność po cały proces został zakończony.Jak materiały tekstowe odpowiedź od wiosny MVC 3.0 Java webapp
To co próbowałem dotąd
@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();
}
Czy próbowałeś spłukiwania OutputStream po każdym Chuck danych jest wysyłany? – Luciano
@ Luciano Dodałem, co do tej pory próbowałem. To nie działa, gdy przeglądam stronę z Chrome – Danish
Myślę, że twoim najlepszym rozwiązaniem byłoby inne podejście: użyj timera w javascriptu, który pobiera dane z/testu co 1 sekundę (lub pół sekundy), używając ajaxa i/test zwróci to, co nie zostało wysłane wcześniej, aż do momentu, w którym został wywołany. – Luciano