### JSP实例:上传Loading条的实现 #### 一、背景介绍 在Web开发中,文件上传是一项常见的功能。为了提升用户体验,在文件上传过程中显示一个加载进度条是很有必要的。本篇文章将详细介绍如何使用JSP结合JavaScript和DWR(Direct Web Remoting)技术实现文件上传时的动态进度条。 #### 二、技术选型与原理 ##### 1. 技术栈 - **前端**:HTML, CSS, JavaScript - **后端**:JSP, Java (使用DWR进行前后端通信) ##### 2. 实现原理 - 使用HTML表单进行文件选择与提交。 - JavaScript定时查询文件上传进度,并更新进度条样式。 - DWR作为桥梁,使得JavaScript可以直接调用Java后台的方法,从而获取上传状态。 #### 三、具体实现步骤 ##### 1. HTML表单设计 ```html <form action="filemanager.do?method=FileLoad" method="post" ENCTYPE="multipart/form-data" onsubmit="startProgress()"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> 上传内容 <input type="file" name="file" id="file"> <div id="loader_container" style="display:none"> <div id="loader"> <div id="persont" align="center"></div> <div align="center"></div> <div id="loader_bg"> <div id="progress"></div> </div> </div> </div> </td> <td width="120" align="center"> <div id="show"> <img id="uploadbutton" src="../img/button/load.gif" height="24" onclick="startProgress()" onmouseover="this.style.cursor='hand'"> </div> </td> </tr> </table> </form> ``` - **表单动作**:定义了文件上传的目标地址以及提交方式。 - **进度条容器**:使用`<div>`标签来构建进度条界面,初始状态下隐藏(`display:none`)。 ##### 2. JavaScript代码逻辑 ```javascript <script language="javascript"> function refreshProgress() { UploadMonitor.getUploadInfo(updateProgress); } function updateProgress(uploadInfo) { if (uploadInfo.inProgress) { document.getElementById("file").disabled = "true"; document.getElementById("show").style.display = "none"; document.getElementById("hidden").style.display = "block"; var progressPercent = Math.ceil((uploadInfo.bytesRead / uploadInfo.totalSize) * 100); document.getElementById('persont').innerHTML = '上传进度:' + progressPercent + '%'; document.getElementById('progress').style.width = (progressPercent / 100) * 200 + 'px'; window.setTimeout('refreshProgress()', 1000); } else { // 文件上传完成后的处理 window.setTimeout('refreshProgress()', 1000); } return true; } function startProgress() { var file = document.getElementById("file"); if (file.value === "") { alert("请选择上传文件"); return; } document.getElementById("loader_container").style.display = "block"; document.getElementById('persont').innerHTML = '上传进度:0%'; window.setTimeout("refreshProgress()", 3000); document.forms[0].submit(); } </script> ``` - **`refreshProgress`函数**:定期调用后端接口查询上传状态。 - **`updateProgress`函数**:根据上传信息更新进度条显示。 - **`startProgress`函数**:启动进度条并提交表单。 ##### 3. 使用DWR调用后端接口 ```html <!-- 下面是使用DWR必须调用的 --> <script src='{ctx}/dwr/engine.js'></script> <script src='{ctx}/dwr/util.js'></script> <script src='{ctx}/dwr/interface/UploadMonitor.js'></script> ``` - **引入DWR相关脚本**:通过DWR的脚本文件,建立前端与后端之间的连接。 - **定义接口**:`UploadMonitor.js`中定义了用于查询上传进度的接口。 #### 四、后端实现 在Java后端部分,需要实现与DWR交互的接口,具体包括文件上传处理逻辑以及上传进度查询逻辑。这部分涉及到具体的Java代码和配置,例如使用`Servlet`处理文件上传请求,并通过DWR暴露相应的服务接口供前端调用。 #### 五、总结 本文详细介绍了如何利用JSP、JavaScript和DWR技术实现文件上传过程中的动态进度条显示。通过这种方式,可以显著提升用户的体验感,让文件上传操作更加友好和直观。此外,还可以根据实际需求进一步优化进度条的设计,比如增加更丰富的动画效果或错误提示等功能。
- 粉丝: 17
- 资源: 310
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享nRF24L01P(新版无线模块控制IC)很好的技术资料.zip
- 技术资料分享Nintendo Entertainment System Documentation Version 1.0
- 技术资料分享NES Specifications很好的技术资料.zip
- 技术资料分享MultiMediaCard Product Manual很好的技术资料.zip
- 技术资料分享MP2359很好的技术资料.zip
- 清泉2024 排位.pdf
- 技术资料分享MP2359 AN很好的技术资料.zip
- 技术资料分享MMC-System-Spec-v3.31很好的技术资料.zip
- 技术资料分享MMCSDTimming很好的技术资料.zip
- 技术资料分享MMC-FAT16-File-System-Specification-v1.0很好的技术资料.zip