j进度条_JSP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

j进度条

作者:黑客防线网安JSP教程基地 来源:黑客防线网安JSP教程基地 浏览次数:0

本篇关键词:进度 %>方法
黑客防线网安网讯:  开始页面:start.jsp  <%@ page contentType="text/html; charset=GBK" %>  <% session.removeAttribute("task"); %>  <jsp:useBean id="task" scope="session"  class="progress....

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

    <TITLE>JSP进度条</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() {

      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.rongsen.com.cn/show-16339-1.html
网站维护教程更新时间:2012-04-07 00:17:57  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer