До сих пор я тоже интересовался различиями.Я создал веб-проект для наблюдения за их жизненным циклом.Его можно проверить по адресу
http://dntuan-java-workspace.googlecode.com/svn/trunk/simple-web
После развертывания на tomcat вы можете наблюдать журналы с консоли, чтобы увидеть, что фильтры инициализируются до запуска контекста .Принимая во внимание, что сервлет инициализируется только тогда, когда запрос сделан (например, http://localhost:8080/simple-web/servlet/life.jsp
)
Дополнительная информация из JSR-000315 JavaTM Servlet 3.0 :
2.3.1 Загрузка и создание экземпляров
Контейнер сервлетов отвечает за загрузку и создание экземпляров сервлетов.Загрузка и создание экземпляров могут происходить при запуске контейнера или с задержкой до тех пор, пока контейнер не определит, что сервлет необходим для обслуживания запроса.
6.2.1 Жизненный цикл фильтра
После развертывания веб-приложенияи до того, как запрос заставит контейнер обращаться к веб-ресурсу, контейнер должен найти список фильтров, которые должны быть применены к веб-ресурсу, как описано ниже.Контейнер должен убедиться, что он создал экземпляр фильтра соответствующего класса для каждого фильтра в списке и вызвал его метод init (FilterConfig config).