Доступ к объекту фильтра через WebApplicationContext

1

Я хочу вызвать метод в объекте Filter после его добавления в соответствии с определением web.xml. Все, что у меня есть, - это объект WebApplicationContext (пусть его называют: wac).

  • Я могу добавить новые объекты фильтра через: wac.getServletContext().addFilter("otherfilter", otherFilter);

  • Кроме того, я могу успешно проверить его существование через: wac.getServletContext().getFilterRegistration("myfilter")

Но как я могу получить доступ (и, возможно, изменить) объекты Filter которые были добавлены ранее?

Теги:
servlets
spring
java-ee
servlet-filters

2 ответа

3
Лучший ответ

Я не уверен, как это сделать так, как вы хотите, но эта проблема обычно решается с использованием другого подхода.

Вы можете объявить свой Filter как bean-компонент в контексте вашего приложения, а затем зарегистрировать DelegatingFilterProxy в web.xml чтобы делегировать фильтрацию в ваш фильтр.

В этом случае ваш фильтр будет регулярным компонентом Spring, и вы сможете получить к нему доступ, как и любой другой компонент.

1

API-интерфейс Servlet не предоставляет никакого механизма для прямого доступа к экземпляру Filter когда он был добавлен в ServletContext. Лучшее, что вы собираетесь получить с API Servlet, - это интерфейс FilterRegistration вы уже нашли, который позволяет вам изменять один и тот же набор параметров конфигурации, как вы можете, через web.xml.

В зависимости от того, что вы хотите сделать, вы можете запрограммировать свой путь вокруг этой проблемы, используя параметры init, но это никогда не будет особенно чистым решением. Я бы пошел с решением DelegatingFilterProxy предложенным axtavt.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню