我正在尝试按顺序将数据发送到网页,我确实知道HTML是如何工作的,并且最可能的答案是ajax,但要求是这只能使用java和html。页面通常在其容器中编译,然后将输出作为响应发送到浏览器,我想在不使用AJAX的情况下执行以下操作。
这必须发送日期并将其打印回浏览器而不加载所有5个日期...例如,新的日期必须每5秒出现在网页上,而不是全部在25秒内出现。
有什么想法吗?
for (int i = 1; i <= 5; i++) {
out.println("<p>#" + i + " " + new Date() + "</p>");
out.flush();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
答案 0 :(得分:0)
解决方案:
OutputStream
直接打印到浏览器中,但由于我在工作时有代理,因此代理在打印时会缓存数据,绕过代理解决了这个问题。然后,输出流与浏览器之间没有缓存,允许它直接打印到浏览器的输出中。
通过这个例子,您可以看到数据逐行打印到浏览器窗口中,在显示数据之前不会等待整整25秒。
public void doGet(HttpServletRequest请求, HttpServletResponse响应)抛出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();
}