zoukankan      html  css  js  c++  java
  • 关于有时候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="70px;height:25px"/>

    JS:

    $("#downLoad").click(function(){ 
      location.href
    = siteurl + "down?path=xxx.mp3";
    });
  • 相关阅读:
    第七十四节,css边框与背景
    php中strlen和{}的效率对比
    for循环++i效率
    php优化技巧
    mysql中group_concat函数用法
    mysql引擎互转问题
    array_column php 函数
    php-mysql结果集函数比较
    javaweb 要学习的东西
    Java 泛型和类型安全的容器
  • 原文地址:https://www.cnblogs.com/Xieyang-blog/p/8326104.html
Copyright © 2011-2022 走看看