我想讓一個servlet在線下載文件。爲此,我在jsp中創建了一個進度條元素。如何使用jsp設置進度條值
<progress id="p1" max="100" value="0"><span>0</span>%</progress>
和Java腳本代碼更新進度值:
function setProgress(value)
{
var progressBar = document.getElementById("p1");
progressBar.value = value;
progressBar.getElementsByTagName('span')[0].textContent = value;
}
現在,在servlet代碼來改變進度:
InputStream is = ..........;
byte[] bytes = new byte[size*1024];
int read = in.read();
for(int j=0;read!=-1;j++)
{
bytes[j] = (byte)read;
setProgress((int)getProgressDownload(bytes.length));
read = in.read();
}
public float getProgressDownload(int dsize)
{
return ((float)dsize/tsize)*100;//tsize is total file's size;
}
public void setProgress(int value)
{
try
{
response.getWriter().write("<script>");
response.getWriter().write("setProgress(\"p1\","+value+");");
response.getWriter().write("</script>");
}
catch(Exception e)
{
e.printStackTrace();
}
}
現在的問題是品牌HTML代碼冗長,因爲每個字節都會打印一個腳本代碼。
我應該怎麼做才能防止這種情況?
感謝您的幫助
更好地使用基於AJAX的方法來完成此任務。 – 2015-04-06 10:55:18
我該怎麼做?你能解釋我嗎? – 2015-04-07 07:36:03
@ParkashKumar是正確的..使用相同的AJAX .. – 2015-04-07 11:10:30