关于有时候Servlet会被执行两次的问题
用<a>标签做了下载跳转,为什么点一次,servlet会被执行两次?
写了一个最简单的文件下载
点击超链接向servlet发送一个请求,然后下载该文件。
可是每次该servlet都会被访问两次,不知道是什么情况
JSP:
<a href="down?path=xxx.mp3">下载</a>
Servlet:
//用的jspsmartupload插件,关键代码如下,每次都会输出两次‘我被访问了’
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
System.out.println("我被访问了");
SmartUpload su = new SmartUpload();
su.initialize(this.getServletConfig(), request, response);
su.setContentDisposition(null);
su.downloadFile("/sound/"+request.getParameter("path"));
}
还有一个问题:点击超链接后,浏览器弹出了下载窗口,这个时候我点击下载窗口中的取消,后台会报错:
org.apache.catalina.connector.ClientAbortException: java.io.IOException: APR error: -730053
这个要怎么处理呢?
------发现原因--------------------
a标签的href属性中的url带参数在火狐浏览器的控制台网络显示只发送一次,但后台会执行两次,ie下正常,url后无参数的情况下两种浏览器都只执行一次。
------解决方案--------------------
使用JS监听按钮的click事件,写在对应js文件里面,如下
JSP:
<input type="button" id="downLoad" value="下载" name="downLoad" style="width:70px;height:25px"/>
JS:
$("#downLoad").click(function(){
location.href = siteurl + "down?path=xxx.mp3";
});
关于有时候Servlet会被执行两次的问题的更多相关文章
- [问题贴]mui.openWindow+自定义事件监听操作让alert()执行两次
仔细看,Alert函数执行了两次 共两个页面:index.html和detail.html, detail.html为按钮设置了自定义事件监听(newsId),触发alert. 在index.html ...
- Spring初始化完成后直接执行一个方法,初始化数据(解决方法被重复执行两次的情况)
在做WEB项目时,经常在项目第一次启动时利用WEB容器的监听.Servlet加载初始化等切入点为数据库准备数据,这些初始化数据 是系统开始运行前必须的数据,例如权限组.系统选项.默认管理员等等.但是项 ...
- 分析解决 spring quartz 中出现的执行两次问题
1. 问题描述 在开发询盘功能时,遇到一个需求,就是后台定时任务执行用电施工业务的工单下发. 使用的技术是 spring quartz,因为其他应用有先例,配置quartz 完成后,先写了一个 hel ...
- spring定时器,定时器一次执行两次的问题
Spring 定时器 方法一:注解形式 配置文件头加上如下: xmlns:task="http://www.springframework.org/schema/task" htt ...
- python多线程实现同时执行两个while循环
如果想同时执行两个while True循环,可以使用多线程threading来实现. 完整代码 #coding=gbk from time import sleep, ctime import thr ...
- ajax跨域往php程序post数据时,php程序总是执行两次的解决方法
php程序是部署在IIS7上面,ajax提交数据时,遇到了两个问题,一个就是跨域,一个php程序总会被执行两次. 第一个问题的解决方法,是百度出来的,添加下面几行代码就可以了: header('Acc ...
- Jquery Mobile中pageinit等函数执行两次的问题【终极解决】
当禁用了jqueryMobile的ajax后,初始化函数如pageinit和pageshow等函数,都会执行两次.document.ready函数也会执行两次. 当然我们可以用一个变量记录是否已经执行 ...
- jq mobile非ajax加载,ready执行两次
jqm只有通过ajax加载的页面才只执行一次ready(正常情况) 页面刷新(同非ajax加载的页面)都会执行两次ready,包括pageinit和pageshow事件也是如此. 两种避免的方法是: ...
- string strSQL = "Select * From Employees;Select * from Customers";执行两次查询
SqlCommand对象的字符串SQL命令可以做多个,以查询为例,用到SqlDataReader的一些方法,如ExecuteReader(),Read()(一条命令内的移动至下一记录),NextRes ...
随机推荐
- <td></td>之间的
今天开发中遇到了一个很丢脸的事:我把下图中别人写的 给去掉了,我觉得这个很多余,结果被在大神们痛斥了一顿.因为去掉这个 会导致td之间没有数据时td的边框不显示的问题,所以几下这个惨痛的教训,以自警. ...
- _heap_alloc_base 奔溃,奔溃原因:堆被破坏
现象:程序崩溃的地方比较随机,之前没问题的代码, 可能直接奔溃,多线程下其他地方堆栈被破坏,引起崩溃的时间是不定,所以在其他地方随机性奔溃 检测方法:使用windows工具gflags.exe 开启 ...
- Powered by Flink
Apache Flink: Powered by Flink https://flink.apache.org/poweredby.html Powered by Flink Apache Flink ...
- Chrome 默认样式 (user agent stylesheetbody) 优先级变高的问题
解决方法:只需要在页面的<HTML>标签前添加声明即可. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional ...
- 每隔10秒钟打印一个“Helloworld”
/** * 每隔10秒钟打印一个“Helloworld” */ public class Test03 { public static void main(String[] args) throws ...
- 单独使用celery
单独使用celery 参考 http://docs.celeryproject.org/en/latest/getting-started/index.html https://www.jianshu ...
- 事件对象event之e.targtet || e.srcElement
p.onclick = function (event) { var e = event || window.event, target = e.target ? e.target : e.srcEl ...
- 洛谷 P2233 [HNOI]公交车线路
洛谷 不知道大家做没做过传球游戏,这一题和传球游戏的转移方程几乎一样. 令\(A\)为\(1\)点,\(E\)为\(5\)点,那么\(f[i][j]\)代表第i步走到j的方案数. \[f[i][j]= ...
- 一.数据库连接对象connection
1.python 3.5,需要把MySQLdb换成pymysql
- 棣小天儿的第一个python程序
根据给定的年月日,以数字形式打印出日期 months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'Augu ...