【发布时间】:2021-06-12 02:38:50
【问题描述】:
我有一个从 JSP 调用的长时间运行的 servlet 进程。
我想将 servlet 进程的状态发送给客户端。
除了流媒体部分,我的一切都按照我想要的方式工作。
我正在使用 ajax 调用 servlet 并使用响应填充文本区域。然而,响应是在最后一次全部发送到客户端,而不是逐步流式传输。
我希望客户端在每个响应(flush())发生时看到它们,而不是在通话结束时立即看到所有响应。
Ajax 调用:
postUploadFile = function() {
$("#status").val("");
YES.getAndShowStatus("status", "${home}/Upload");
}
YES.getAndShowStatus = function(listenerId, url, successFunction) {
jQuery.get(url,
function(data) {
val = jQuery("#" + listenerId).val();
jQuery("#" + listenerId).val(val + data);
}
);
};
Servlet 代码:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("----------");
log.info("Doing post");
resp.setContentType("text/plain");
OutputStream out = resp.getOutputStream();
out.write("FOOBAR 1\n".getBytes());
out.flush();
out.write("FOOBAR 2\n".getBytes());
out.flush();
out.write("FOOBAR 3\n".getBytes());
out.flush();
log.info("Done.");
}
我最终得到了这个,但没有看到它发生的进展。我需要做什么才能看到进度?
【问题讨论】:
标签: javascript java ajax jsp servlets