#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;
}