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

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

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

【 tulaoshi.com - Java 】

  二、启动任务

(本文来源于图老师网站,更多请访问https://www.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对象)。


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


<% 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线程创建并启动了任务线程。

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

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

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

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

经验教程

937

收藏

90

精华推荐

Flash制作进度条教程

Flash制作进度条教程

MC罗

带文字的进度条

带文字的进度条

zhang706543880

创建setup类型的进度条

创建setup类型的进度条

比你爹还范

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