Я хочу зарегистрировать фильтр, но обнаружил, что мне нужно использовать как @Component, так и @WebFilter для фильтр для перехвата запросов.
Однако я заметил, что некоторые блоги о Spring Boot используют только @WebFilter, а фильтр все равно регистрируется, что меня смущает.
Код: Выделить всё
@Component
@WebFilter(urlPatterns = "/*", filterName = "xssFilter")
public class XssFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
Filter.super.destroy();
}
}
Я также пытался переписать проект Spring Boot, но не использовал встроенный Tomcat; вместо этого я использовал внешний сервер Tomcat.
Код: Выделить всё
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-tomcat
provided
"Не удалось зарегистрировать 'filter xssFilter' на контекст сервлета, возможно, уже зарегистрирован?"
Когда я удаляю @Component и использую только @WebFilter, программа работает нормально, а запросы перехватываются фильтром.Я прочитал много сообщений в Интернете, но до сих пор не могу понять эту проблему.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -webfilter
Мобильная версия