Как проверить, работают ли фильтры? — Тестирование фильтров

#java #servlets #filter

#java #сервлеты #Фильтр

Вопрос:

У меня есть фильтр:

 @WebFilter(urlPatterns = "/Mvc02")
public class Filter02 implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        some code...
    }

    public void init(FilterConfig config) throws ServletException {

    }
}
 

И сервлет:

 @WebServlet(name = "Mvc02", urlPatterns = "/Mvc02")
public class Mvc02 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        some code...
    }
}
 

Когда я захожу в свой браузер и набираю http://localhost:8080/servletjee_war_exploded/Mvc02 это дает мне сервлет. Разве это не должно сначала дать мне фильтр? Как запустить фильтр?

Ответ №1:

если вы хотите, чтобы фильтр применялся только к определенным шаблонам URL (и если вы используете spring), вам нужно будет зарегистрировать фильтр с помощью FilterRegistrationBean

 @Bean
public FilterRegistrationBean<Filter02> loggingFilter(){
    FilterRegistrationBean<Filter02> registrationBean 
      = new FilterRegistrationBean<>();
        
    registrationBean.setFilter(new Filter02());
    registrationBean.addUrlPatterns("/Mvc02");
        
    return registrationBean;    
}