2016-03-01 3 views
1

У меня есть фильтр сервлетов и из-за моей бизнес-логики. Фильтр использует некоторые переменные, которые инициализируются при вызове метода init() сервлета. Поэтому возникает вопрос: есть ли возможность инициализировать фильтр после сервлета. Мой Web.xml следующий:Инициализировать фильтр внутри сервлета initializtion

... 
<servlet> 
    <servlet-name>CommonsServlet</servlet-name> 
    <servlet-class>com.promptlink.dslib.gwt.common.server.rpc.CommonsServletImpl</servlet-class> 
    </servlet> 
... 
<filter> 
     <filter-name>CommonServletFilter</filter-name> 
     <filter-class>com.promptlink.dslib.gwt.common.server.httpListeners.CommonServletFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>CommonServletFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
     <servlet-name>CommonsServletImpl</servlet-name> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 
... 

Может быть, какой-либо способ настроить фильтр не в xml? У меня есть сердце, что можно добавить фильтр в ServletContext, но мне нужно добавить отображение для фильтра тоже

ответ

1

Фильтры инициализируются перед сервлетами, см. Здесь для details.

Но вы можете создать ServletContextListener, который загружается при запуске приложения перед любым фильтром или сервлетом, инициализирует ваши переменные в слушателе и позволяет вашим serlvets и фильтрам использовать уже инициализированные переменные.

Слушатель также может программно добавлять ваши сервлеты и фильтры, см. ServletContext.addFilter() и ServletContext.addServlet().

Смежные вопросы