假设我有以下Java代码。

get("/", (request, response) -> {
    Map<String, Object> attributes = new HashMap<>();

    //attributes.put("message", "Hello World!");

    return new ModelAndView(attributes, "index.ftl");
}, new FreeMarkerEngine());

那是Spark的。当我导航到localhost:portnumber/时,我看到已呈现index.ftl,我们假设(此处未编码)显示此应用程序的数据库中的数据。但是,假设我要动态更新index.ftl。假设另一个用户从该应用程序的另一个实例更新了数据库(此处未编码),而我想在第一个用户页面上显示index.ftl中的新更改。无需重新渲染页面怎么办?

您不仅可以在Java端简单地设置一个计时器,该计时器每10到20毫秒会提取一次新数据。这也将浪费大量的连接时间。是否可以通过某种方式对Java代码执行ping操作,以更新数据库?像数据库的监听器一样?

这不仅是一个问题,而且如何能够在不重新呈现的情况下将新接收的数据推送到index.ftl?

最佳答案

您可以使用COMET将数据推送到浏览器

您可以使用几种不同的COMET技术来达到效果。我发现非常comprehensive article在比较和选择它们之间很有用。

使用COMET之后,您可以utilize this trick,以便仅刷新<div>标记内的内容

另一个reference

09-28 07:22