解决方案 :
OutputStream直接打印到浏览器中,但是由于我有一个代理在工作,所以代理正在缓存数据,因为它正在被打印出来,绕过代理解决了这个问题。输出流在它和浏览器之间没有缓存,允许它直接打印到浏览器的输出中。
通过此示例,您可以看到数据被逐行打印到浏览器窗口中,它不会在显示数据之前等待整整 25 秒。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); response.setHeader("CacheControl", "no-cache"); //PrintWriter out = response.getWriter();
OutputStreamWriter osr = new OutputStreamWriter(response.getOutputStream());
BufferedWriter br = new BufferedWriter(osr);
br.append("<html>");
br.append("<head><title>Load</title></head>");
br.append("<body>");
for (int i = 1; i <= 5; i++) {
br.append("<div>#" + i + " " + new Date() + "</div>");
br.flush();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("Cannot sleep");
}
}
br.append("</body></html>");
br.close();
}