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

孤独的西门红人

孤独的西门红人

2016-01-29 12:33

JSP编程进度条设计实例(3),JSP编程进度条设计实例(3)
  二、启动任务


  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

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

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

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

<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页面的多个线程。

展开更多 50%)
分享

猜你喜欢

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

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

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

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

s8lol主宰符文怎么配

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

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

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

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

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

lol偷钱流符文搭配推荐

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

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

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

jsp进度条

Web开发
jsp进度条

lolAD刺客新符文搭配推荐

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

JSP中实现全文检索

JSP中实现全文检索

自定义文档库之---扩展文档库字段

自定义文档库之---扩展文档库字段
下拉加载更多内容 ↓