//这是BEAN
package com.wisdom.smsendmanager;
import java.io.Serializable;
//import com.wisdom.smsendmanager.servlet.AddrRelationshipServlet;
import javax.servlet.http.*;
import java.util.*;
import com.wisdom.smsendmanager.AddrManager;public class TaskBean implements Runnable, Serializable {
private int counter;
private int sum;
private boolean started;
private boolean running;
private int sleep;
public HttpSession session;
private int radio;
private Vector vcSource;
private Vector vcDesFiledName; public TaskBean() {
counter = 0;
sum = 0;
started = false;
running = false;
sleep = 1000; } protected void work() {
try {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!");
//Thread.sleep(sleep);
System.out.println("*******************");
AddrManager addrManager = new AddrManager();
int fileRecordNum = vcSource.size();
for (int i=1; i < fileRecordNum; i++){
Vector vcRecord = (Vector) vcSource.get(i);
addrManager.ImportData("1", "TelephoneNoteTemplate",
"TelephoneNote", radio,
vcRecord, vcDesFiledName); counter++;
System.out.println(counter);
//counter = Math.round((counter/fileRecordNum)*10);
System.out.println("X YYY HHHH eeee OO+++====="+counter); }
} catch (Exception e) {
setRunning(false);
}
} public void setRadio(int radio)
{
this.radio = radio;
}
public int getRadio()
{
return radio;
}
public void setVcSource(Vector vcSource)
{
this.vcSource = vcSource;
System.out.println(vcSource);
}
public Vector getVcSource()
{
return vcSource;
}
public void setVcDesFiledName(Vector vcDesFiledName)
{
this.vcDesFiledName = vcDesFiledName;
}
public Vector getVcDesFiledName()
{
return vcDesFiledName;
}//新加获得暂停时间/////////////////////////////
public int getSleepTime()
{
return sleep;
}
public void setSleepTime(int recordNum)
{
if(recordNum<5)
{
this.sleep = 1;
}
else
{
this.sleep = recordNum / 5;
}
}
/**
* 启动进度条
*/
/*
public void start()
{ //session.removeAttribute("task");
TaskBean task = new TaskBean();
task.setRunning(true);
new Thread(task).start();
}*/
/**
* 停止进度条
*/
/*
public void stop()
{
TaskBean task = new TaskBean();
task.setRunning(false);
}*/
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
public synchronized int getPercent() {
return counter;
} public synchronized boolean isStarted() {
return started;
} public synchronized boolean isCompleted() { return counter == 100;
} public synchronized boolean isRunning() {
return running;
} public synchronized void setRunning(boolean running) {
this.running = running;
if (running)
started = true;
} public synchronized Object getResult() {
if (isCompleted())
return new Integer(sum);
else
return null;
} public void run() {
try {
setRunning(true);
while (isRunning() && !isCompleted())
work();
}catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
setRunning(false);
} }}
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import=" com.wisdom.smsendmanager.TaskBean" %><jsp:useBean id="task" scope="session" class=" com.wisdom.smsendmanager.TaskBean"/><HTML><HEAD>
<TITLE>文件导入进度</TITLE>
<%
//int time =
if (task.isRunning()) {
%>
<SCRIPT LANGUAGE="JavaScript">
setTimeout("location='status.jsp'", 1000);
</SCRIPT>
<% } %>
</HEAD><BODY> <H1 ALIGN="CENTER">文件导入进度:</H1>
<%! int per;%>
<% int percent = task.getPercent();%>
已完成:<%= percent %>%
<%
int per = percent/2;
%>
</H2> <TABLE WIDTH="40%" ALIGN="CENTER"
BORDER=1 CELLPADDING=0 CELLSPACING=0>
<TR>
<% for (int i = 0; i <= per ; i += 1) { %>
<TD WIDTH="1%" BGCOLOR="#000080"> </TD>
<% } %>
<% for (int i = 49; i >= per; i -= 1) { %>
<TD WIDTH="1%" bgcolor="cccccc"> </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>
</TR>
</TABLE></BODY></HTML>
package com.wisdom.smsendmanager.servlet;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.lang.Math;
import com.wisdom.smsendmanager.*;
public class AddrRelationshipServlet extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
private HttpServletRequest request;
private HttpServletResponse resposne;
private int leng = 0; //存储目标字段长度
private int radio =1; //导入类型
private String strBranchID = null;
private String ssymb = null;
private Vector vcDestination;
private Vector vcSource;
private String sourceName = null;
public Vector desVec;
private Vector vcDesFieldName;
private HttpSession session;
private int recordNum;
// private int counter; //Initialize global variables
public void init() throws ServletException {
} //Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
this.request = request;
this.resposne = resposne;
PrintWriter out = response.getWriter(); leng = Integer.parseInt(request.getParameter("desNameLeng"));
radio = Integer.parseInt(request.getParameter("radio")); session = request.getSession();
vcDesFieldName = (Vector)session.getAttribute("sessionDesFieldName");
vcSource = (Vector)session.getAttribute("sessionFileData");
int fileRecordNum = vcSource.size();
vcDestination = vcDesFieldName; ///*调用肖娜的导入数据类,进行数据导入
//AddrManager addrManager = new AddrManager();
TaskBean taskBean = new TaskBean();
taskBean.setRadio(radio);
taskBean.setVcDesFiledName(vcDesFieldName);
taskBean.setVcSource(vcSource);
try
{
//还需要处理
taskBean.start();
RequestDispatcher requestDispatcher=request.getRequestDispatcher("./nclsmsendmanage/status.jsp");
requestDispatcher.forward(request,response); }
catch(Exception ex)
{
ex.printStackTrace();
}
}
public final void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
doGet(request,response);
}
//Clean up resources
public void destroy() {
}
}
{ //session.removeAttribute("task");
TaskBean task = new TaskBean();
task.setRunning(true);
new Thread(task).start();
}
1.我觉得这个里面的逻辑有问题,你的多线是对应另一个新的TaskBean task = new TaskBean()的线程
2.还有你jsp中的调用javaBean也是一个静态的过程,只能获得一次当前的进度条的状态,而且应该是0%
如果你的代码就是这样的话
3。建议你单独在javaBean中写个main()函数来测试,先不用servlet