java - 在浏览器上定期显示消息

标签 java javascript jquery jsp servlets

这就是我的 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 秒后在控制台中打印日期。

我想做的事情:

当我运行此代码时,我会在控制台中打印以下输出:

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 秒 的间隔打印日期(通过发送多个每当在上面的代码中执行 Syetem.out.println() 方法时都会响应浏览器)。

从服务器推送消息的原因:

在上面的示例中,我循环打印简单的消息。但在实际场景中,存在一些计算,因此消息将在不同的时间范围内可用(即不是每 5 秒之后,某些消息将很快可用,而其他消息可能需要更多时间)。因此,如果我从服务器推送,那么只要消息可用,我就可以推送消息。

无法理解:

我不确定如何从单独的线程(即从上面代码中的 ExecutorService)向浏览器发送多个响应。我正在研究 javascript 中存在的 setInterval 方法,但我不知道如何使用它来构建此代码。

我可以自由地使用 jQueryjavascript 来完成这项工作。请指教。

最佳答案

您应该让客户端每五秒发出一次 AJAX 请求,而不是尝试从服务器推送,并且您应该返回要从该端点打印的代码段。

关于java - 在浏览器上定期显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26698454/

相关文章:

jquery - 让 jQuery 可拖动以捕捉到特定网格

java - JBoss 不会一直运行

java - jax-ws webservice 的端点始终是 localhost

java - 使用 Hibernate 在 JPA 中分页 native SQL 查询而不会出错

java - 嵌套数组节点类型在 Jackrabbit JCR 中有效吗?

javascript - promise 内部工作

javascript - 检查表格中的每个单元格是否等于上面的单元格

javascript - 可填写的 PDF 到 HTML

javascript - Canvas 与 img - 性能

javascript - Bootstrap 下拉菜单中不触发 LinkBut​​ton OnClick 事件