• 终极解决方案:org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response


    一、项目

    我的项目采用Spring MVC +JSP+EasyUI 做的老项目。

    在做图片验证码方法时,向网页输出验证码图片的方法如下:

        @Override
        public void showCodeImg(HttpServletRequest request, HttpServletResponse response)  throws IOException {
            response.setHeader("Expires","-1");//控制缓存的失效日期
            response.setHeader("Cache-Control","no-cache");//必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求
            response.setHeader("Pragma","-1");
            CaptchaUtil util=CaptchaUtil.Instance();
            // 将验证码输入到session中,用来验证
            String code=util.getString();
            request.setCharacterEncoding("UTF-8");
            request.getSession().setAttribute(SecurityCodeConstant.CODE_NUM,code);
            // 输出到web页面
            ImageIO.write(util.getImage(), "jpg", response.getOutputStream());
        }
    

      

    二、出现错误:

    org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response

    找了网上资料:无非是说

    https://blog.csdn.net/zeb_perfect/article/details/45641355

    https://blog.csdn.net/xyajia/article/details/78730751

    之类没用的废话。

    三、最终原因:

    Win10的操作系统,Tomcat 放在了C盘,权限有问题!!!!,虽然报错完全看不出跟文件权限有半毛钱关系!!

    四、解决方案

    把Tomcat 拿出来放D盘,再次发布项目,TMD一切正常!!!

    五、经验:

    别用Windows了,改用Linux吧,浪费时间和生命

  • 相关阅读:
    BZOJ 3809 Gty的二逼妹子序列 莫队算法+分块
    BZOJ 3131 SDOI2013 淘金 数位dp
    BZOJ 4408 FJOI2016 神秘数 可持久化线段树
    [leetcode] Reverse Linked List
    走迷宫问题总结
    [leetcode] Max Area of Island
    [leetcode] All Paths From Source to Target
    [leetcode] Arithmetic Slices
    [leetcode] Move Zeroes
    [leetcode] Linked List Cycle
  • 原文地址:https://www.cnblogs.com/pangguoming/p/9830635.html
Copyright © 2020-2023  润新知