jsp进度条

可靠的风流浪子

可靠的风流浪子

2016-02-19 19:29

下面图老师小编要跟大家分享jsp进度条,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

  开始页面:start.jsp

  %@ page contentType="text/html; charset=GBK" %
  % session.removeAttribute("task"); %

  jsp:useBean id="task" scope="session"  class="progress.TaskBean"/

  % task.setRunning(true); %

  % new Thread(task).start(); %

  jsp:forward page="status.jsp"/

  状态页面:status.jsp

  %@ page contentType="text/html; charset=GBK" %
  jsp:useBean id="task" scope="session" class="progress.TaskBean"/
  HTML
    HEAD

    TITLEJSP进度条/TITLE

    % if (task.isRunning()) { %

      script type="" LANGUAGE="JavaScript"

        setTimeout("location='status.jsp'", 1000);

      /script

    % } %

  /HEAD

  bODY bgcolor=""

  H1 ALIGN="CENTER"JSP进度条/H1

    H2 ALIGN="CENTER"

      结果: %= task.getResult() %BR

      % int percent = task.getPercent(); %

      %= percent %%

    /H2

    TABLE WIDTH="60%" ALIGN="CENTER"

         CELLPADDING=0 CELLSPACING=2

      TR

        % for (int i = 10; i = percent; i += 10) { %

          TD WIDTH="10%" height="10" BGCOLOR="red" /TD

        % } %

        % for (int i = 100; i percent; i -= 10) { %

          TD WIDTH="10%" /TD

        % } %

      /TR

    /TABLE

  TABLE WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0

      TR

        TD ALIGN="CENTER"

          % if (task.isRunning()) { %

            正在执行

          % } else { %

            % if (task.isCompleted()) { %

              完成

            % } else if (!task.isStarted()) { %

              尚未开始

            % } else { %

              已停止

            % } %

          % } %

        /TD

      /TR
  TR

        TD ALIGN="CENTER"

          BR

          % if (task.isRunning()) { %

            FORM METHOD="GET" ACTION="stop.jsp"

              INPUT TYPE="SUBMIT" ="停止"

            /FORM

          % } else { %

            FORM METHOD="GET" ACTION="start.jsp"

              INPUT TYPE="SUBMIT" ="开始"

            /FORM

          % } %

        /TD

      /TR

    /TABLE

  /BODY/HTML

  停止页面:stop.jsp

  %@ page contentType="text/html; charset=GBK" %
  jsp:useBean id="task" scope="session" class="progress.TaskBean"/

  % task.setRunning(false); %

  jsp:forward page="status.jsp"/

  业务逻辑bean:TaskBean.java

  package progress;

  import java.io.Serializable;

  /**
   * 首先我们设计一个TaskBean类,它实现java.lang.Runnable接口,
   * 其run()方法在一个由JSP页面(start.jsp)启动的独立线程中运行。
   * 终止run()方法执行由另一个JSP页面stop.jsp负责。
   * http://blog.cnd8.com/
   * TaskBean类还实现了java.io.Serializable接口,
   * 这样JSP页面就可以将它作为JavaBean调用
   * */
  public class TaskBean
      implements Runnable, Serializable {

    private int counter;

    private int sum;

    private boolean started;

    private boolean running;

    private int sleep;

    public TaskBean() {

      counter = 0;

      sum = 0;

      started = false;

      running = false;

      sleep = 100;

    }
    /**
     * TaskBean包含的“繁重任务”是计算1+2+3…+100的值,
     * 不过它不通过100*(100+1)/2=5050公式计算,而是由run()方法
     * 调用work()方法100次完成计算。work()方法的代码如下所示,
     * 其中调用Thread.sleep()是为了确保任务总耗时约10秒。
     * */
    protected void work() {

      try {

        Thread.sleep(sleep);

        counter++;

        sum += counter;

      }
      catch (InterruptedException e) {
        setRunning(false);

      }

    }
    //status.jsp页面通过调用下面的getPercent()方法获得任务的完成状况:
    public synchronized int getPercent() {

      return counter;

    }
    //如果任务已经启动,isStarted()方法将返回true:
    public synchronized boolean isStarted() {

      return started;

    }
    //如果任务已经完成,isCompleted()方法将返回true
    public synchronized boolean isCompleted() {

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

      return counter == 100;

    }
    //如果任务正在运行,isRunning()方法将返回true:
    public synchronized boolean isRunning() {

      return running;

    }
    /**
     * SetRunning()方法由start.jsp或stop.jsp调用,
     * 当running参数是true时。SetRunning()方法还要将任务标记为“已经启动”。
     * 调用setRunning(false)表示要求run()方法停止执行。
     * */
    public synchronized void setRunning(boolean running) {

      this.running = running;

      if (running) {

        started = true;
      }

    }
    //任务执行完毕后,调用getResult()方法返回计算结果;如果任务尚未执行完毕,它返回null:
    public synchronized Object getResult() {

      if (isCompleted()) {

        return new Integer(sum);
      }

      else {

        return null;
      }

    }
    /**
     * 当running标记为true、completed标记为false时,
     * run()方法调用work()。在实际应用中,run()方法也许要
     * 执行复杂的SQL查询、解析大型XML文档,或者调用消耗大量
     * CPU时间的EJB方法。注意“繁重的任务”可能要在远程服务器
     * 上执行。报告结果的JSP页面有两种选择:或者等待任务结束,或者使用一个进度条。
     * */
    public void run() {

      try {

        setRunning(true);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

        while (isRunning() && !isCompleted()) {

          work();
        }

      }
      finally {

        setRunning(false);

      }

    }

  }

  
  http://blog.csdn.net/java_283066589/archive/2007/03/17/1532118.aspx

展开更多 50%)
分享

猜你喜欢

jsp进度条

Web开发
jsp进度条

JSP编程进度条设计实例(5)

Java JAVA基础
JSP编程进度条设计实例(5)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

JSP编程进度条设计实例(1)

Java JAVA基础
JSP编程进度条设计实例(1)

JSP编程进度条设计实例(2)

Java JAVA基础
JSP编程进度条设计实例(2)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JSP编程进度条设计实例(3)

Java JAVA基础
JSP编程进度条设计实例(3)

JSP编程进度条设计实例(4)

Java JAVA基础
JSP编程进度条设计实例(4)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Java实现用DOM文档和XML文件互换的操作

Java实现用DOM文档和XML文件互换的操作

excel文件损坏如何修复

excel文件损坏如何修复
下拉加载更多内容 ↓