JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简单集成教程
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简单集成教程
JS文件在最下面:
引入
1 2 | <script src= "${path}/js/jquery-2.0.3.min.js" ></script> <script src= "${path}/js/jquery.cookie.min.js" ></script> |
html部分 遮盖层
1 2 3 4 | <div id= "loding" style= "position: fixed;font-weight:400;font-size:21px;color:#FFFFFF;z-index:200;width: 100%;height: 100%;text-align:center;line-height:600px; background: rgba(0,0,0,0.4);display: none;" > <img style= "vertical-align:middle" src= "${path }/image/loding/lodingsafe.gif" /> <span >正在导出中请稍后...</span> </div> |
JS部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <script type= "text/javascript" > //下载监测timer function initDownloadCheckTimer(){ configDownloadCheckTimer = window.setInterval(function() { var cookieValue = getCookie( "downloadCookie" ); if (cookieValue === "coursewareExcelDownloadFile" ) { $( '#loding' ).css( 'display' , 'none' ); finishDownload() ; } }, 1000 ); } function finishDownload() { window.clearInterval(configDownloadCheckTimer); $.removeCookie( 'downloadCookie' ); } function getCookie(cookieName) { var strCookie = document.cookie; var arrCookie = strCookie.split( "; " ); for (var i = 0 ; i < arrCookie.length; i++){ var arr = arrCookie[i].split( "=" ); if (cookieName == arr[ 0 ]){ return arr[ 1 ]; } } return "" ; } function mySubmit(){ $.removeCookie( 'downloadCookie' ); $( '#loding' ).css( 'display' , 'block' ); initDownloadCheckTimer(); var coursewares=document.getElementById( "coursewares" ).value; if (coursewares == null || coursewares == "" ){ alert( "必须填写ID" ); //如果值为空,提示用户填写 return ; } else { //如果值不为空,提交表单 window.location.href = "${path}/ssss_dddd.action?courseware=" +coursewares; } } </script> |
后台部分 JSP项目 可以自己看着改
1 2 3 4 | // //生成返回cookiee Cookie cookie= new Cookie( "downloadCookie" , "coursewareExcelDownloadFile" ); HttpServletResponse response = super .getResponse(); response.addCookie(cookie); |
遮盖层效果: 转圈的小图标 自己百度找一下
1 | jquery.cookie的js |
1 2 | /*! jquery.cookie v1.4.1 | MIT */ ! function (a){ "function" == typeof define&&define.amd?define([ "jquery" ],a): "object" == typeof exports?a(require( "jquery" )):a(jQuery)}( function (a){ function b(a){ return h.raw?a:encodeURIComponent(a)} function c(a){ return h.raw?a:decodeURIComponent(a)} function d(a){ return b(h.json?JSON.stringify(a):String(a))} function e(a){0===a.indexOf( '"' )&&(a=a.slice(1,-1).replace(/\\"/g, '"' ).replace(/\\\\/g,"\\ "));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i)," number "==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e)," = ",d(g),i.expires?" ; expires= "+i.expires.toUTCString():" ",i.path?" ; path= "+i.path:" ",i.domain?" ; domain= "+i.domain:" ",i.secure?" ; secure ":" "].join(" ")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split(" ; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split(" = "),q=c(p.shift()),r=p.join(" = ");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b," ",a.extend({},c,{expires:-1})),!a.cookie(b))}}); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!