三、任務進度
status.jsp頁面利用一個HTML進度條向用戶顯示任務的執行情況。首先,status.jsp利用<jsp:useBean>標記獲得start.jsp頁面創建的Bean對象:
<jsp:useBean id="task" scope="session"
class="test.barBean.TaskBean"/>
為了及時反映任務執行進度,status.jsp會自動刷新。JavaScript代碼setTimeout("location=status.jsp", 1000)將每隔1000毫秒刷新頁面,重新請求status.jsp,不需要用戶干預。
<HTML>
<HEAD>
<TITLE>JSP進度條</TITLE>
<% if (task.isRunning()) { %>
<SCRIPT LANGUAGE="JavaScript">
setTimeout("location=status.jsp", 1000);
</SCRIPT>
<% } %>
</HEAD>
<ODY>
進度條實際上是一個HTML表格,包含10個單元——即每個單元代表任務總體的10%進度。
<H1 ALIGN="CENTER">JSP進度條</H1>
<H2 ALIGN="CENTER">
結果: <%= task.getResult() %><BR>
<% int percent = task.getPercent(); %>
<%= percent %>%
</H2>
<TABLE WIDTH="60%" ALIGN="CENTER"
BORDER=1 CELLPADDING=0 CELLSPACING=2>
<TR>
<% for (int i = 10; i <= percent; i += 10) { %>
<TD WIDTH="10%" BGCOLOR="#000080"> </TD>
<% } %>
<% for (int i = 100; i > percent; i -= 10) { %>
<TD WIDTH="10%"> </TD>
<% } %>
</TR>
</TABLE>
任務執行情況分下面幾種狀態:正在執行,已完成,尚未開始,已停止:
<TABLE WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR>
<TD ALIGN="CENTER">
<% if (task.isRunning()) { %>
正在執行
<% } else { %>
<% if (task.isCompleted()) { %>
完成
<% } else if (!task.isStarted()) { %>
尚未開始
<% } else { %>
已停止
<% } %>
<% } %>
</TD>
</TR>