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

Java 如何使进度条与服务器代码同步工作?,java,javascript,jsp,web-applications,Java,Javascript,Jsp,Web Applications,在加载jsp之前,必须执行一个繁重的数据库进程 // jsp <% new bean().startHeavyProcess(); %> . . . //jsp . . . 在这个过程中,我想使用java脚本显示一个进度条。有没有办法让进度条与服务器端代码同步工作?我可以知道服务器端代码何时完成执行或即将完成执行吗?如果不针对应用程序构建实现这一点的功能,就无法做到这一点 我假设繁重的处理是由客户端点击链接启动的 如果是这样,那么您可以尝试以下方法 用户单击启动繁重处理的链接 服

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

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

在这个过程中,我想使用
java脚本
显示一个
进度条
。有没有办法让进度条与服务器端代码同步工作?我可以知道服务器端代码何时完成执行或即将完成执行吗?

如果不针对应用程序构建实现这一点的功能,就无法做到这一点

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

如果是这样,那么您可以尝试以下方法

  • 用户单击启动繁重处理的链接
  • 服务器返回在上述相同请求中启动的进程的唯一id
  • 创建一个单独的界面,您可以在其中按id查询特定流程的进度
  • 使用javascript每1秒查询一次界面,以了解该过程已经走了多远
  • 向用户显示进度条(可能用进度条替换原始链接)
  • 当进程处于100%时,将用户重定向到新页面
  • 这种方法要求您拥有某种重型流程管理器,它了解所有正在运行的流程,并可以从中提取流程

    这可以通过在数据库中创建一个新表来实现,在该表中存储进程唯一id和每个进程的%进度。然后,每个进程都会在进程进行时更新表中的行,您只需在其ID请求时从表中返回进程值


    如果您正在寻找一个好的进度条插件Jquery,那么::)

    如果您不构建特定于应用程序的功能来实现这一点,那么就没有办法做到这一点

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

    如果是这样,那么您可以尝试以下方法

  • 用户单击启动繁重处理的链接
  • 服务器返回在上述相同请求中启动的进程的唯一id
  • 创建一个单独的界面,您可以在其中按id查询特定流程的进度
  • 使用javascript每1秒查询一次界面,以了解该过程已经走了多远
  • 向用户显示进度条(可能用进度条替换原始链接)
  • 当进程处于100%时,将用户重定向到新页面
  • 这种方法要求您拥有某种重型流程管理器,它了解所有正在运行的流程,并可以从中提取流程

    这可以通过在数据库中创建一个新表来实现,在该表中存储进程唯一id和每个进程的%进度。然后,每个进程都会在进程进行时更新表中的行,您只需在其ID请求时从表中返回进程值

    如果您正在寻找一个好的进度条插件Jquery,那么它就是::)

    我使用

    function pollProgress() {
      setTimeout(function() {
        int progress = queryServerProgress();
        if(progress < 100) {
          pollProgress();
        }
      }, 1000)
    }
    
    函数pollProgress(){
    setTimeout(函数(){
    int progress=queryServerProgress();
    如果(进度<100){
    pollProgress();
    }
    }, 1000)
    }
    
    以及查询当前进度的服务器。只要进度<100%,则触发相同的查询/更新功能

    不过,您需要跟踪服务器端的进度。

    我使用

    function pollProgress() {
      setTimeout(function() {
        int progress = queryServerProgress();
        if(progress < 100) {
          pollProgress();
        }
      }, 1000)
    }
    
    函数pollProgress(){
    setTimeout(函数(){
    int progress=queryServerProgress();
    如果(进度<100){
    pollProgress();
    }
    }, 1000)
    }
    
    以及查询当前进度的服务器。只要进度<100%,则触发相同的查询/更新功能


    不过,您需要跟踪服务器端的进度。

    我们有一个类似的用例,我们通过使用RESTAPI定期检查状态来实现。当任务在服务器端进行时,服务器会更新内存中的状态,客户端会从API请求进度。

    我们有一个类似的用例,我们通过使用REST API定期检查状态来实现。当任务在服务器端进行时,服务器将更新内存中的状态,客户端将从API请求进度