java - 如何使进度条与服务器代码同步工作?

标签 java javascript jsp web-applications

在加载 jsp 之前必须执行一个繁重的数据库进程。

// jsp
<% new bean().startHeavyProcess(); %>
.
.
.

随着进程的进行,我想使用java脚本显示一个进度条。有什么方法可以使进度条与服务器端代码同步工作?我可以知道服务器端代码何时完成执行或即将完成执行吗?

最佳答案

如果您不构建特定于您的应用程序的功能来实现此目的,则无法做到这一点。

我假设繁重的处理是由客户端点击链接启动的?

如果是这样,那么您可以尝试以下操作。

  1. 用户点击启动繁重处理的链接。
  2. 服务器返回在上述同一请求中启动的进程的唯一 ID。
  3. 创建一个单独的界面,您可以在其中通过 ID 查询特定进程的进度。
  4. 使用 javascript 每 1 秒查询一次界面,了解进程已经进行了多远
  5. 向用户显示进度条(可能用进度条替换原始链接)
  6. 当进程达到 100% 时,将用户重定向到新页面。

这种方法要求您拥有某种重型进程管理器,它了解所有正在运行的进程,并可以从中提取进程。

这也许可以通过在数据库中创建一个新表来完成,在该表中存储进程唯一 ID 和每个进程的进度百分比。然后,每个进程都会在进程进行时更新表中的行,并且您只需在其 ID 请求时从表中返回进程值即可。

如果您正在寻找一个好的进度条插件 Jquery 有它:http://jqueryui.com/progressbar/ :)

关于java - 如何使进度条与服务器代码同步工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624308/

相关文章:

javascript - 无法通过 DOM 从输入标签获取文本

java - 在 JSP 中显示包含 csv 数据的 java 对象的最佳方式?

java - 如何将本地字符串值传递给 html 代码?

java - Java中两个BigIntegers的关系操作

java - 将 webelement 转换为字符串 Selenium

javascript - D3 过渡 : Fading in and out the colors within a gradient fill

javascript - 从附件 PouchDB 返回 url

mysql - 如何使用jsp从数据库中删除选定的数据?

java - Spring HATEOAS 模板链接无效下载方法

java - Jboss EAP 7 - 如何从部署中排除隐式模块 (javax.jms)?