Как использовать фильтр? - PullRequest
1 голос
/ 27 января 2011

Когда запускается Java-фильтр? Метод Filter init() переопределяет метод сервлета init()? Где я могу объявить параметры инициализации в web.xml?

Ответы [ 2 ]

3 голосов
/ 27 января 2011

Когда запускается Java-фильтр?

Во время запуска веб-приложения.


Способ Filter init() переопределяет метод сервлета init()?

Нет. Они никоим образом не связаны друг с другом. Метод init() вашего фильтра просто реализует метод, определенный в javax.servlet.Filter interface .


Где я могу объявить параметры инициализации в web.xml?

Внутри <filter> декларации.

<filter>
    <filter-name>myFilter</filter-name>
    <filter-class>com.example.MyFilter</filter-class>
    <init-param>
        <param-name>foo</param-name>
        <param-value>bar</param-value>
    </init-param> 
</filter>

Затем он будет доступен внутри init() следующим образом:

@Override
public void init(FilterConfig config) {
    String foo = config.getInitParameter("foo"); // contains "bar".
}
1 голос
/ 27 января 2011

Объявите это в web.xml как

<web-app version=...>
    ...
    <filter>
        <description>...</description>
        <display-name>My Filter</display-name>
        <filter-name>MyFilter</filter-name>
        <filter-class>com.foo.bar.MyFilter</filter-class>
    </filter>
    ...
    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <url-pattern>/some/path</url-pattern>
    </filter-mapping>
    ...
</web-app>

[Обновить] Раздел <filter> регистрирует ваш фильтр в системе; он будет автоматически запущен при запуске веб-приложения. В разделе <filter-mapping> вы можете настроить, когда (по каким URL) вызывать ваш фильтр. [/ Update]

На остальные ваши вопросы уже ответил @ BalusC.

...