Есть ли способ определить в web.xml
, что определенный сервлет Фильтр должен выполняться только один раз?Есть ли способ запустить сервлет Фильтр только один раз?
0
A
ответ
0
№ Нет. Там Filter
не для. Независимо от того, что делает Filter
, скорее всего, это должно быть сделано ServletContextListener
.
@WebListener
public class Config implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
// Do stuff during server startup.
}
@Override
public void contextDestroyed(ServletContextEvent event) {
// Do stuff during server shutdown.
}
}
Когда вы все еще не в Servlet 3.0 еще, удалить @WebListener
и зарегистрировать его в web.xml
старый fasioned путь следующим образом:
<listener>
<listener-class>com.example.Config</listener-class>
</listener>
Если вы действительно настаивают на использовании Filter
, вы могли используйте метод init()
для работы и просто позвоните chain.doFilter(request, response)
в методе doFilter()
.
0
Обходной путь должен состоять в том, чтобы иметь переменную класса и установить его при первом доступе и иметь весь функциональный код в блоке «if», который проверяет эту переменную.