Существует множество примеров того, как это сделать, когда вы создаете новый сервлет и фильтруете вместе, но я хочу использовать фильтр, который уже определен в web.xml.При создании сервлета динамически с использованием спецификации 3.0, как я могу зарегистрировать его с помощью существующего статически созданного фильтра?
0
A
ответ
1
Это работает (с ServletListener):
ServletContext sc = event.getServletContext();
// dynamically register servlet
ServletRegistration.Dynamic reg = sc.addServlet("MyServlet", MyServlet.class);
reg.addMapping("/MyUrl/*");
// register new servlet with an existing filter
FilterRegistration fr = sc.getFilterRegistration("MyExistingFilterInWebXML");
EnumSet<DispatcherType> all = EnumSet.allOf(DispatcherType.class);
fr.addMappingForServletNames(all, false, "MyServlet");
+0
Спасибо за публикацию решения - никогда не приходилось использовать это, но хорошо знать об этом. – stdunbar
К сожалению, это наоборот - фильтр применяется к сервлет, и вы можете дать фильтр список «имен» сервлетов. Можете ли вы изменить файл web.xml для фильтра? – stdunbar
Нет, вот в чем проблема: – rmp