这就是我Servlet
中的内容。
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("Initializing...");
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(new Runnable() {
public void run() {
System.out.println("Inside Thread!!!");
for(int i=1; i<5; i++){
System.out.println("Date: " + new Date());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
executorService.shutdown();
// Some more piece of code is there
}
我在这做什么:
我创建了一个单独的线程,其中日期在控制台中5 sec
之后打印。
我想做什么:
当我运行此代码时,我会在控制台中打印此输出:
Initializing...
Inside Thread!!!
Date : Sat Nov 01 15:57:57 GMT 2014
Date : Sat Nov 01 15:58:02 GMT 2014
Date : Sat Nov 01 15:58:07 GMT 2014
Date : Sat Nov 01 15:58:12 GMT 2014
我希望在jsp
页面中打印同一组消息,以便以5 sec
的间隔打印日期(通过在Syetem.out.println()
时向浏览器发送多个响应在上面的代码中执行{1}}方法)。
从服务器推送消息的原因:
在上面的例子中,我在循环中打印简单消息。但在实际情况中,存在一些计算,因此消息将在不同的时间帧可用(即,不是每5秒之后,一些消息将在快速时间内可用而其他消息可能需要更多时间)。因此,如果我从服务器推送,那么我可以在消息可用时推送消息。
无法理解:
我不确定如何从单独的线程(即上述代码中的ExecutorService
)向浏览器发送多个响应。我正在研究setInterval
中出现的javascript
方法,但我不会起诉如何使用它构建此代码。
我可以使用jQuery
或javascript
来完成这项工作。请指教。
答案 0 :(得分:1)
您应该让客户端每隔五秒钟发出一次AJAX请求,而不是尝试从服务器推送,您应该返回要从该端点打印的代码段。