想做一个事件驱动的进度条, 不知道有没有机会.
现在能想到的是每几秒钟调用一个function来查一下后台的sevlet执行某任务的进度.
这样做还有一个问题----几个client同时执行一个sevlet时没办法分开.
不知道如何能实现一种机制,让后台sevlet工作有进展时通知前方的进度条来update.
现在能想到的是每几秒钟调用一个function来查一下后台的sevlet执行某任务的进度.
这样做还有一个问题----几个client同时执行一个sevlet时没办法分开.
不知道如何能实现一种机制,让后台sevlet工作有进展时通知前方的进度条来update.
解决方案 »
- json数组中的日期在页面如何显示
- JSP中list的问题,比较诡异
- 网页上实现历史曲线图的放大缩小
- jsp out对象问题
- 数据库连接池的问题(c3p0),很棘手,项目很紧,高手帮帮忙,严重感谢!!!
- iframe问题百出~郁闷~散分求解!
- ???Hibernate問題﹐請各位大哥幫忙(在線等)
- struts2,maven
- 怎么获得提交表单页的url??
- 关于该用单例还是多例的探讨。大神们来吧。
- struts怎么用过滤器过滤部分 .do
- JDBC驱动查询 Oracle 11g 不是得到乱码(?)就是报java.sql.SQLException:遇到无效的字符:failAL32UTF8Conv ,高手高手高高手
但我采用了其他的方法实现,请看这个 http://www.java2000.net/viewthread.jsp?tid=1457
后台 servlet 写给方法. 前台定时调用.
<%@page contentType="text/html;charset=GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
<title>进度条</title>
</head>
<body>
<jsp:useBean id="progress" scope="session" class="oa.TaskBean"/>
<%
new Thread(progress).start();
%>
<jsp:forward page="status.jsp"/>
</body>
</html>
status.jsp
<%@page contentType="text/html;charset=GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
<title>进度条</title>
<jsp:useBean id="progress" scope="session" class="oa.TaskBean"/>
<%
if(!progress.isComplete()){
%>
<script language="JavaScript">
<!--
function refresh(){
document.location="status.jsp";
}
setTimeout("refresh()",1000);
-->
</script>
<%}%>
</head>
<body>
<%
int percent=progress.getPercent();
%>
<table>
<div align=center><%=percent%>%
<tr>
<% for(int i=1;i<=percent;i+=1)
{%>
<td width=10% bgcolor="#000080"> </td>
<%
}%>
<% for(int i=percent;i<100;i+=1)
{%>
<td width=10%> </td>
<%}%>
</tr>
<div>
</table>
<%
if(progress.isComplete())
out.print("<br><font color=\"red\">任务完成</font>");
%>
</body>
</html>TaskBean.java
package oa;
public class TaskBean extends Thread{
public TaskBean(){
}
private int percent=0;
private boolean complete=false;
public synchronized void run(){
while(true){
if(percent>=100){
complete=true;
return;
}
try{
Thread.sleep(1000);
}catch(Exception e){
System.err.println("TaskBean.run()"+e.getMessage());
}
percent+=10;
}
}
public boolean isComplete(){
return complete;
}
public int getPercent(){
return percent;
}
}
return 0;
}