diese Filter Gegeben:Spring Boot - Warum wird MyFilter oft in einer einzigen Anfrage aufgerufen, wenn Tiles + JSP verwendet wird?
public class MyFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("FILTERING!!!!!!!!!!!!!!!!!!!"+((HttpServletRequest)request).getRequestURI());
chain.doFilter(request, response);
}
Ich habe gesehen viele Male in der gleichen Anfrage
Frühling Boot-App aufgerufen wird:
@SpringBootApplication(scanBasePackageClasses={MySpringBootDemoApplication .class, TilesConfiguration.class})
public class MySpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringBootDemoApplication .class, args);
}
@Bean
public Filter myFilter(){
return new MyFilter();
}
}
TilesConfiguration:
@Configuration
public class TilesConfiguration {
@Bean
public TilesConfigurer tilesConfigurer() {
final TilesConfigurer configurer = new TilesConfigurer();
configurer.setDefinitions(new String[] { "WEB-INF/**/tiles.xml" });
configurer.setCheckRefresh(true);
return configurer;
}
@Bean
public TilesViewResolver tilesViewResolver() {
final TilesViewResolver resolver = new TilesViewResolver();
resolver.setViewClass(TilesView.class);
return resolver;
}
}
Dies ist, was ich in den Protokollen sehe:
FILTERING!!!!!!!!!!!!!!!!!!!/spring-boot-demo/home
FILTERING!!!!!!!!!!!!!!!!!!!/spring-boot-demo/WEB-INF/layouts/standard.jsp
FILTERING!!!!!!!!!!!!!!!!!!!/spring-boot-demo/WEB-INF/layouts/standard.jsp
FILTERING!!!!!!!!!!!!!!!!!!!/spring-boot-demo/WEB-INF/layouts/standard.jsp
Die einzige vom Browser aus realer Anfrage ist:
FILTERING!!!!!!!!!!!!!!!!!!!/spring-boot-demo/home
Wo die Fliesen im Zusammenhang (/standard.jsp
) kommen? In herkömmlichen Spring MVC-Anwendungen sind sie nie aufgetaucht.
Ich weiß, dass MyFilter OncePerRequestFilter erweitern kann, aber ich kann die echten Filter, die ich verwenden muss, nicht ändern, sie stammen aus Legacy-Bibliotheken.