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

不知好歹92

不知好歹92

2016-01-29 12:34

JSP编程进度条设计实例(5),JSP编程进度条设计实例(5)
  页面底部提供了一个按钮,用户可以用它来停止或重新启动任务:


<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

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

  只要不停止任务,约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://m.tulaoshi.com/java/)

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


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


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


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


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

展开更多 50%)
分享

猜你喜欢

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

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

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

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

s8lol主宰符文怎么配

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

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

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

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

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

lol偷钱流符文搭配推荐

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

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

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

jsp进度条

Web开发
jsp进度条

lolAD刺客新符文搭配推荐

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

Oracle 数据库中的 empty string 处理

Oracle 数据库中的 empty string 处理

XPath序列之四

XPath序列之四
下拉加载更多内容 ↓