zoukankan      html  css  js  c++  java
  • 关于:org.apache.catalina.connector.ClientAbortException及getOutputStream() has already been called for this response的异常处理

    1.异常场景:

      在进行将数据用word导出或者Excel导出的时候。抛出的异常getOutputStream() has already been called for this response

    导致的原因:

      出现这个异常是由于多次调用了response.getOutputStream() 或者在代码中既用了response.write(),也用了getOutputStream()导致出现的冲突,所引起的异常。在我的代码中,导出文件是采用了getOutputStream()的方式,而在统一异常处理中是使用了out.write()的方式向页面中输出错误信息引起的。

    解决方案:所以只需改成相同的方式就可以了。或者在调用玩getOutputStream()方法完成时,显式的关闭这个输出流就可以。

    2.异常场景:

      在进行将数据用word导出或者Excel导出的时候。抛出的异常org.apache.catalina.connector.ClientAbortException:java.io.IOException。后端代码中没有错误,在前端页面中也没有发现其他错误。就是到点击导出按钮时,有时会抛出这个异常,有时不会抛出这个异常。随机出现。

    导致原因:

      出现这个异常是由于在向页面中输出信息的过程中,信息还没用输出完成,页面就已经关闭了或页面已经刷新了,导致输出流中断异常。而我的场景时,点击导出后,弹出框将会关闭,而在这个过程中,后台响应没有那么快,输出过程中窗口已经关闭了。

    解决方案:

      1.前端页面中采用Ajax异步调用的方式,待页面完成响应完成后,将弹出框关闭;

      2.最笨的方法就是不关闭,禁用关闭按钮,待响应完成后,开启按钮,让用户关闭。

      

  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/sun-flower1314/p/10079582.html
Copyright © 2011-2022 走看看