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

2016-01-29 12:34 6 1 收藏

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

【 tulaoshi.com - Java 】

  页面底部提供了一个按钮,用户可以用它来停止或重新启动任务:


<TR
            <TD ALIGN="CENTER"
                <BR
                <% if (task.isRunning()) { %
                    <FORM METHOD="GET" ACTION="stop.jsp"
                        <INPUT TYPE="SUBMIT" VALUE="停止"
                    </FORM
                <% } else { %
                    <FORM METHOD="GET" ACTION="start.jsp"
                        <INPUT TYPE="SUBMIT" VALUE="开始"
                    </FORM
                <% } %
            </TD
        </TR
    </TABLE
</BODY</HTML


  只要不停止任务,约10秒后浏览器将显示出计算结果5050:


  四、停止任务


  stop.jsp页面把running标记设置成false,从而停止当前的计算任务:


<jsp:useBean id="task" scope="session"
    class="test.barBean.TaskBean"/


<% task.setRunning(false); %
<jsp:forward page="status.jsp"/
 
  注意最早的Java版本提供了Thread.stop方法,但JDK从1.2版开始已经不赞成使用Thread.stop方法,所以我们不能直接调用Thread.stop()。


  第一次运行本文程序的时候,你会看到任务的启动有点延迟;同样地,第一次点击“停止”按钮时也可以看到任务并没有立即停止运行(特别是如果机器配置较低的话,延迟的感觉更加明显),这些延迟都是由于编译JSP页面导致的。编译好JSP页面之后,应答速度就要快多了。


  五、实际应用

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

  进度条不仅使得用户界面更加友好,而且对服务器的性能也有好处,因为进度条会不断地告诉用户当前的执行进度,用户不会再频繁地停止并重新启动(刷新)当前的任务。另一方面,创建单独的线程来执行后台任务也会消耗不少资源,必要时可考虑通过一个线程池来实现Thread对象的重用。另外,频繁地刷新进度页面也增加了网络通信开销,所以务必保持进度页面简洁短小。


  在实际应用中,后台执行的繁重任务可能不允许停止,或者它不能提供详细的执行进度数据。例如,查找或更新关系数据库时,SQL命令执行期间不允许中途停止——不过如果用户表示他想要停止或中止任务,程序可以在SQL命令执行完毕后回退事务。


  解析XML文档的时候,我们没有办法获知已解析内容精确的百分比。如果用DOM解析XML文档,直到解析完成后才得到整个文档树;如果用SAX,虽然可以知道当前解析的内容,但通常不能确定还有多少内容需要解析。在这些场合,任务的执行进度只能靠估计得到。


  估计一个任务需要多少执行时间通常是很困难的,因为它涉及到许多因素,即使用实际测试的办法也无法得到可靠的结论,因为服务器的负载随时都在变化之中。一种简单的办法是测量任务每次执行所需时间,然后根据最后几次执行的平均时间估算。如果要提高估计时间的精确度,应当考虑实现一种针对应用特点的算法,综合考虑多种因素,例如要执行的SQL语句类型、要解析的XML模式的复杂程度,等等。

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

  结束语:本文例子显示出用JSP、Java、HTML和JavaScript构造进度条是相当容易的,真正困难的是如何将它用到实际应用之中,特别是获得后台任务的进度信息,但这个问题没有通用的答案,每一种后台执行的任务都有它自己的特点,必须按照具体情况具体分析。

来源:https://www.tulaoshi.com/n/20160129/1486676.html

延伸阅读
标签: Web开发
在最近的一个项目中,有一个上传功能:上传一个cvs文件,然后解析此文件并写入数据库 由于经常需要传很大的文件,客户完成此功能往往需要40分钟,在这个过程中,页面也没有任何提示,用户体验非常不好? 为何不用ajax作一个进度条呢? 分两步完成此需求: 一:写一个简单的ajax,实现最简单的进度条功能。 二:把此进...
标签: flash教程
本文由 中国 新生上路 原创,转载请保留此信息! 在学习中遇到问题请到 论坛 发贴交流   先来看下效果: 第一步:新建一flash文档,降背景色改为你喜欢的颜色,大小自己定,帧频为24 第二步:新建一影片剪辑元件loading,此元件舞台上用字体工具写出loading字样,写完后在时间轴上图层一的第四十一帧右键插入帧,新建图层,这时...
标签: Web开发
第一种方式,函数式: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"       html xmlns="http://www.w3.org/1999/xhtml"       head       meta http-equiv="Con...
标签: flash教程
1。首先在场景上画上一个长条状的进度条 2。选取这个进度条之后按 F8 把它转换成Movieclip影片,记得“注册点”必须在左边 3。转换成影片之后设定实例名 loader ,再来编辑这个影片 4。制作100个帧的的进度,然后增加一个图层并增加一个停止播放的指令 5。回到场景,在第一帧输入以下代码 6。在第二帧开始加入你们的...

经验教程

637

收藏

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