Добавление фильтра в сервлет guice
Я создал сервлет, используя Сервет guice, который отлично работает:
protected Injector getInjector() {
return Guice.createInjector(new ServletModule() {
protected void configureServlets() {
bind(MyService.class).to(MyServiceImpl.class);
serve("/myservlet").with(MyServlet.class);
}
});
}
Мой сервлет выглядит так:
@Inject
private MyService myService;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().print(myService.hello("John Doe").toString());
}
Теперь я пытаюсь добавить фильтр к нему, как вещь:
bind(MyService.class).to(MyServiceImpl.class);
filter("/*").through(MyFilter.class);
serve("/myservlet").with(MyServlet.class);
Мой фильтр выглядит так:
@Singleton public class MyFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException { }
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("Yeah");
}
public void destroy() { }
}
Как только я добавляю фильтр, сервлет больше не вызывается.
Когда я удаляю фильтр, сервлет снова работает.
Что я делаю не так?
1 ответ:
Проблема не в вашей сборке Guice, а в вашей реализации фильтра. Вам придется позвонить:
chain.doFilter(request, response);
В вашем методе
doFilter
передать обработку через фильтр. Вы можете прочитать больше о типичном фильтре в javadoc .