前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >终极解决方案:org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has alr

终极解决方案:org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has alr

作者头像
庞小明
发布2018-11-20 17:35:24
1.4K0
发布2018-11-20 17:35:24
举报
文章被收录于专栏:pangguomingpangguoming

一、项目

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

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

代码语言:javascript
复制
    @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吧,浪费时间和生命

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档