只是在黑暗中拍摄,因为我不知道您的确切环境......您可以让数据库触发器在每次提交一行时触发对 servlet 的调用,然后运行一些如下所示的代码:
获取我们要更新的页面的活动脚本会话。这消除了检查站点上运行的每个反向 ajax 脚本会话的需要。一旦我们有了脚本会话,我们就可以使用第二个代码块来获取一些数据并在客户端更新一个表。第二个代码部分所做的只是将 javascript 发送到客户端,以通过打开的反向 ajax 连接执行。
String page = ServerContextFactory.get().getContextPath() + "/reverseajax/clock.html";
Browser.withPage(page, new Runnable() {
public void run() {
Util.setValue("clockDisplay", output);
}
});
// Creates a new Person bean.
Person person = new Person(true);
// Creates a multi-dimensional array, containing a row and the rows column data.
String[][] data = {
{person.getId(), person.getName(), person.getAddress(), person.getAge()+"", person.isSuperhero()+""}
};
// Call DWR's util which adds rows into a table. peopleTable is the id of the tbody and
// data conta
ins the row/column data.
Util.addRows("peopleTable", data);
请注意,上述两段代码都是直接从文档示例 @ http://directwebremoting.org/dwr-demo/中提取的。这些只是反向 ajax 如何向客户端发送数据的简单示例,但您的确切情况似乎更多地取决于您如何接收通知,而不是如何更新客户端屏幕。
如果没有对 java 代码的某种类型的数据库通知,我认为您将不得不以设定的时间间隔轮询系统。即使在轮询时,通过在轮询数据库以获取信息之前验证页面是否存在活动的反向 ajax 脚本会话,您也可以使系统更加高效。