Фильтр - это многоразовый фрагмент кода, который можно использовать для преобразования HTTP -запросов, ответов и информации заголовка. Фильтр не похож на сервлета. Он не может генерировать запрос или ответ. Это просто изменяет запрос на определенный ресурс или изменяет ответ из определенного ресурса.
Недавно, когда я использовал сценарии, я использовал файлы cookie для идентификации компьютера, добавила фильтрацию и тщательно изучал сервлеты и фильтры. Основное отличие:
Жизненный цикл фильтра, как правило, проходит следующие три этапа:
Характеристики сервлетов:
инициализация
Метод init () вызывается, когда контейнер сначала загружает фильтр. Этот класс содержит ссылку на объект конфигурации фильтра в этом методе. Нашим фильтрам на самом деле не нужно это делать, так как не используется информация о инициализации, и здесь это только для демонстрационных целей.
фильтр
Большую часть времени фильтра потребляется здесь. Метод Dofilter вызывается контейнером, и ссылки на запрос сервлета, объекты сервлета и цепочку фильтров в цепочке запроса/ответа передаются одновременно. Затем фильтр имеет возможность обработать запрос, передать задачу обработки следующему ресурсу в цепочке (вызывая метод DoFilter на ссылке объекта цепочки фильтров), а затем обрабатывает ответ, когда элемент управления обработкой возвращается в фильтр.
Разрушение
Контейнер вызывает метод Destry () непосредственно перед сбором мусора, чтобы иметь возможность выполнить любой необходимый код очистки.
Относительно цепочки. Dofilter (запрос, ответ) Его функция заключается в пересылке запроса следующему объекту в цепочке фильтров. Следующий здесь относится к следующему фильтру, если нет фильтра, это ресурс, который вы запросили. Как правило, фильтры являются одной цепью, и в web.xml есть только несколько конфигураций. Подключен один за другим
Запрос -> Filter1 -> Filter2 -> Filter3 -> .... -> Resource.
Фильтр - это операция цепи, поэтому при обработке одного фильтра вы, наконец, должны перейти к сервлету, чтобы ответить на запрос.
Если вы пройдете через цепь, метод цепочки. Dofilter (запрос, ответ) немедленно прыгнет к перехваченному сервлету и вернется в фильтр. Chain эквивалентен двери, выйти из этой двери, а затем вернуться из этой двери. Метод для вызова фильтра заключается в настройке его в web.xml, и вам необходимо настроить URL-паттерн, такой же, как сервлет, который вам необходимо перехватить.
<!-Настройте фильтр-> <Filter> <Filter-name> suibianxie </filter-name> <filter-class> com.etoak.filter.myencoding </filter-class> <!-Настройка частного параметра-> <init-param> <param-ame> mycode </param-name> <param-value> gbkm </param-val> </param-value> gbkam> </param-value> </param-value> </param-value> </param-val> </param-value> </param-vAl <!-Порядок перехвата связан с порядком картирования-> <Фильт-картирование> <Filter-name> suibianxie </filter-name> <!-Обратите внимание, что это должно соответствовать перехвату URL-pattern-patterna, что означает, что Filter-Paterting> </url-pattern-pattern-masting> </urlter-pattern-masting> </urlter-pattert-pattern-masting> </urlter-patter-pattern-pattert-pattern-patter-patter-patter-patter-patter- Фильтр-> <Filter> <Filter-name> suibianxie2 </filter-name> <filter-class> com.etoak.filter.naming </filter-class> </filter> <Filter-Mapping> <Filter-name> suibianxie2 </filter-name> <url-pattern>/servlet/test </url-p-pathpaping> </revlet/test-paterttrater> </url-pattertmappascappay> </urlttrater> <Url-pattern>/servlet/testmappasing> </url-pattern> <url-pattern>/servlet/test-pattert <Servlet-name> тест </servlet-name> <vervlet> com.etoak.servlet.test </servlet> </servlet> <servlet-mapping> <servlet-name> test </servlet-name> <url-pattern>/servlet/test </url-pattern> </servlet> <url-pattern>/servlet/test </url-pattern> </servlet>
Вышеуказанное - это разница и связь между сервлетами и фильтрами, введенными вам редактором. Я надеюсь, что это будет полезно для всех!