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");
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM