问题分析:
在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");
}