当前位置:七道奇文章资讯网站建设网站编程
日期:2010-11-19 10:13:00  来源:本站整理

JSP编程进度条计划实例[网站编程]

赞助商链接



  本文“JSP编程进度条计划实例[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  很多Web利用、企业利用触及到长时间的操作,比方复杂的数据库查询或沉重的XML处理等,固然这些任务主要由数据库系统或中间件完成,但任务履行的后果仍旧要借助JSP才能发送给用户.本文介绍了一种通过改良前端表现层来改进用户感受、减轻服务器负载的办法.

  当JSP调用一个必须长时间运行的操作,且该操作的后果不能(在服务器端)缓冲,用户每次恳求该页面时都必须长时间等候.很多时刻,用户会失去耐烦,接着尝试点击浏览器的革新按钮,终究绝望地脱离.

  本文介绍的技术是把沉重的计算任务别脱离来,由一个独立的线程运行,从而办理上述问题.当用户调用JSP页面时,JSP页面会当即返回,并提醒用户任务已经启动且正在履行;JSP页面自动革新自己,报告在独立线程中运行的沉重计算任务的当行进度,直至任务完成.

  1、模拟任务

  首先我们计划一个TaskBean类,它实现java.lang.Runnable接口,其run()办法在一个由JSP页面(start.jsp)启动的独立线程中运行.终止run()办法履行由另一个JSP页面stop.jsp负责.TaskBean类还实现了java.io.Serializable接口,这样JSP页面便可以将它作为JavaBean调用:

  package test.barBean;

  import java.io.Serializable;

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

  }

  }


  以上是“JSP编程进度条计划实例[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • JSP编程进度条计划实例
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .