jsp进度条

2016-02-19 19:29 5 1 收藏

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

【 tulaoshi.com - Web开发 】

  开始页面: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); %

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

  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;

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

      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() {

      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);

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

          work();
        }

      }
      finally {

        setRunning(false);

      }

    }

  }

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

来源:http://www.tulaoshi.com/n/20160219/1621115.html

延伸阅读
《无尽的进度条Progress Quest》部分法术效果攻略 提示1:《无尽的进度条》 为半即时回合制游戏,即那种战斗开始后敌我都有行动条,走到头才能行动的回合制。 瞬移:有一定几率让你无视速度,立刻行动,几率随法术等级上升。 兔子的正义铁拳:召...
标签: flash教程
本文由 中国 txwh2006(踏雪无痕)   原创,转载请保留此信息! 这几天为了制作网页,需要做个进度条,无奈以前不注意,至今还不会做,只得看网上教程来学习。网上教程虽然不少,但其实版本雷同,真要学还不如意,有的教程号称“最简单”,他给你一段代码,叫你哭笑不得,人家会的高手,他也不在乎你一段代码,菜鸟们看了也不懂;...
带文字的进度条 作者:重庆建设集团一所 唐星彬 下载本文示例源代码 在下载安装的过程中,我们经常会看到带有文字的进度条,它能给人一种直观的概念。在VC中也有进度条的控件,但它不能显示文字。今有一CProgressCtrl类的派生类CTextProgressCtrl就有完成这样的工作。两种控件运行情况的对比如下: ...
标签: Web开发
CSS:  程序代码 style #graphbox{ border:1px solid #e7e7e7; padding:10px; width:250px; background-color:#f8f8f8; margin:5px 0; } #graphbox h2{ color:#666666; font-family:Arial; font-size:18px; font-weight:700; } .graph{ position:relative; background-color:#F0EFEF; border:1px solid #cccccc; padding:2px; font-size:1...
标签: Web开发
1.建立进度条html页面 progressbar.htm script language="javascript" function setPgb(pgbID, pgbValue) { if ( pgbValue = 100 ) { //debugger; if (lblObj = document.getElementById(pgbID+'_label')) { lblObj.innerHTML = pgbValue + '%'; // change the label value } if ( pgbObj = document.getElementBy...

经验教程

425

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部