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

2016-01-29 12:33 16 1 收藏

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

【 tulaoshi.com - Java 】

  二、启动任务


  start.jsp是web.xml部署描述符中声明的欢迎页面,web.xml的内容是:


<?xml version="1.0" encoding="GB2312"?


<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd"


<web-app
    <welcome-file-list
        <welcome-filestart.jsp</welcome-file
    </welcome-file-list
</web-app


  start.jsp启动一个专用的线程来运行“繁重的任务”,然后把HTTP请求传递给status.jsp。


  start.jsp页面利用<jsp:useBean标记创建一个TaskBean的实例,将scope属性定义为session使得对于来自同一浏览器的HTTP请求,其他页面也能提取到同一个Bean对象。start.jsp通过调用session.removeAttribute("task")确保<jsp:useBean创建了一个新的Bean对象,而不是提取一个旧对象(例如,同一个用户会话中更早的JSP页面所创建的Bean对象)。

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

  下面是start.jsp页面的代码清单:

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

<% session.removeAttribute("task"); %


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


<% task.setRunning(true); %
<% new Thread(task).start(); %
<jsp:forward page="status.jsp"/
 
  start.jsp创建并设置好TaskBean对象之后,接着创建一个Thread,并将Bean对象作为一个Runnable实例传入。调用start()方法时新创建的线程将执行TaskBean对象的run()方法。


  现在有两个线程在并发执行:执行JSP页面的线程(称之为“JSP线程”),由JSP页面创建的线程(称之为“任务线程”)。接下来,start.jsp利用调用status.jsp,status.jsp显示出进度条以及任务的执行情况。注意status.jsp和start.jsp在同一个JSP线程中运行。


  start.jsp在创建线程之前就把TaskBean的running标记设置成了true,这样,即使当JSP线程已开始执行status.jsp而任务线程的run()方法尚未启动,也能够确保用户会得到“任务已开始运行”的状态报告。


  将running标记设置成true、启动任务线程这两行代码可以移入TaskBean构成一个新的方法,然后由JSP页面调用这个新方法。一般而言,JSP页面应当尽量少用Java代码,即我们应当尽可能地把Java代码放入Java类。不过本例中我们不遵从这一规则,把new Thread(task).start()直接放入start.jsp突出表明JSP线程创建并启动了任务线程。


  在JSP页面中操作多线程必须谨慎,注意JSP线程和其它线程实际上是并发执行的,就象在桌面应用程序中,我们用一个线程来处理GUI事件,另外再用一个或多个线程来处理后台任务。不过在JSP环境中,考虑到多个用户同时请求某一个页面的情况,同一个JSP页面可能会在多个线程中同时运行;另外,有时同一个用户可能会向同一个页面发出多个请求,虽然这些请求来自同一个用户,它们也会导致服务器同时运行一个JSP页面的多个线程。

来源:http://www.tulaoshi.com/n/20160129/1486565.html

延伸阅读
位图进度条 作者:徐云飞 下载本文示例源代码 图一 例子效果 玩过破天的朋友知道,游戏更新时进度是用位图表示的,我觉的挺漂亮的,于是自己动手做了一个类来实现那种效果。 这个类的名字叫CBmpProgCtrl,继承于CStatic,使用方法如下。 1、首...
标签: flash教程
1。首先在场景上画上一个长条状的进度条 2。选取这个进度条之后按 F8 把它转换成Movieclip影片,记得“注册点”必须在左边 3。转换成影片之后设定实例名 loader ,再来编辑这个影片 4。制作100个帧的的进度,然后增加一个图层并增加一个停止播放的指令 5。回到场景,在第一帧输入以下代码 6。在第二帧开始加入你们的...
标签: flash教程
本文由 中国 新生上路 原创,转载请保留此信息! 在学习中遇到问题请到 论坛 发贴交流   先来看下效果: 第一步:新建一flash文档,降背景色改为你喜欢的颜色,大小自己定,帧频为24 第二步:新建一影片剪辑元件loading,此元件舞台上用字体工具写出loading字样,写完后在时间轴上图层一的第四十一帧右键插入帧,新建图层,这时...

经验教程

162

收藏

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