разница между жизненным циклом сервлета и жизненным циклом фильтра - PullRequest
13 голосов
/ 24 сентября 2010

Есть ли разница между жизненным циклом сервлета и фильтра?.

Ответы [ 2 ]

26 голосов
/ 24 сентября 2010

Нет, и сервлет, и фильтр:

  • создаются (один раз) при запуске контекста
  • метод init(..) называется
  • ониобрабатывать каждый запрос - сначала он проходит через все фильтры, а затем достигает сервлета
  • , когда контекст уничтожается (т. е. когда ваш контейнер останавливается или ваше приложение отменяется с консоли менеджера), метод destroy(..)называется
9 голосов
/ 07 апреля 2014

До сих пор я тоже интересовался различиями.Я создал веб-проект для наблюдения за их жизненным циклом.Его можно проверить по адресу

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).

...