0

Существует множество примеров того, как это сделать, когда вы создаете новый сервлет и фильтруете вместе, но я хочу использовать фильтр, который уже определен в web.xml.При создании сервлета динамически с использованием спецификации 3.0, как я могу зарегистрировать его с помощью существующего статически созданного фильтра?

+0

К сожалению, это наоборот - фильтр применяется к сервлет, и вы можете дать фильтр список «имен» сервлетов. Можете ли вы изменить файл web.xml для фильтра? – stdunbar

+0

Нет, вот в чем проблема: – rmp

ответ

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