問題分析:
在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 }
重點:
catch (IllegalStateException e) {
servletRequest.getServletContext().removeAttribute("/rent");
}
