Request processing failed; nested exception is java.lang.IllegalStateException: getOutputStream() has already been called for this response

问题分析:

      在ServletRequest servletRequest中已经存在一个项目名称,此时,又用项目名称访问 http://localhost:8080/rent/pdf/preview rent这个名称已经在Application.yml中设置了,

     这时会生成一个缓存在servletRequest中,访问就会有重复的/rent,就会报错

解决方案

                清空servletRequest中存在的/rent缓存

 1  @Override
 2     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException {
 3 
 4         HttpServletResponse response = (HttpServletResponse) servletResponse;
 5 
 6         response.setHeader("Access-Control-Allow-Origin", "*");
 7         response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
 8         response.setHeader("Access-Control-Max-Age", "3600");
 9         response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Content-Type,XFILENAME,XFILECATEGORY,XFILESIZE");
10 
11         logger.info("*********************************过滤器被使用**************************");
12         try {
13             filterChain.doFilter(servletRequest, servletResponse);
14         } catch (IllegalStateException e) {
15             servletRequest.getServletContext().removeAttribute("/rent");
16         } catch (ServletException e) {
17             e.printStackTrace();
18         }
19 
20     }
View Code

  重点:

catch (IllegalStateException e) {
servletRequest.getServletContext().removeAttribute("/rent");
}
原文地址:https://www.cnblogs.com/liuyangfirst/p/9922101.html