Различия и связи между сервлетами, фильтрами, слушателями, перехватчиками
1. Концепция
1.servlet: Servlet-это приложение Java, работающее на стороне сервера с платформой и независимыми от протокола, и может динамически генерировать веб-страницы, которые работают на среднем уровне между запросами клиента и ответами на серверы.
2. Фильтр: Фильтр - это многоразовый фрагмент кода, который можно использовать для преобразования HTTP -запросов, ответов и информации заголовка. Фильтр не похож на сервлета. Он не может генерировать запрос или ответ. Это просто изменяет запрос на определенный ресурс или изменяет ответ из определенного ресурса.
3. Слушатель: слушатель, буквально можно увидеть, что слушатель в основном используется только для прослушивания. Через слушателя вы можете прослушать действие выполнения на веб -сервере и давать соответствующие ответы в соответствии с его требованиями.
Проще говоря, это функциональный компонент, который автоматически выполняет код, когда создаются три объекта приложения, сеанса и запроса или когда добавляются атрибуты модификации и удаления.
4. Interceptor: это программирование в тангенциальной ориентации, которая должна вызывать метод перед вашей службой или методом, или вызовать метод после метода.
Например, Dynamic Proxy - это простая реализация перехватчика. Вы можете распечатать строку перед вызовом метода (или выполнять другие операции бизнес -логики), вы также можете распечатать строку после вызова метода или даже выполнять операции бизнес -логики, когда вы бросаете исключение.
5. Сервлет, фильтр, слушатель настроены в web.xml, Interceptor не настраивается в web.xml, Struts Interceptor настраивается на struts.xml. Перехватчик для пружины настроен на Spring.xml.
2. Заказ
Порядок загрузки Web.xml: Context -Param -> Listener -> Filter -> Servlet
3. Обязанности
1. Сервилет:
(1) Создать и вернуть полную HTML -страницу, содержащую динамическое содержание на основе характера запроса клиента
(2) Создайте часть страницы HTML (фрагмент HTML), которая может быть встроена в существующую HTML -страницу
(3) Прочитайте скрытые данные, отправленные клиентом
(4) Прочитайте данные дисплея, отправленные клиентом
(5) Общаться с другими ресурсами сервера (включая приложения базы данных и Java)
(6) Отправить скрытые данные клиенту через код состояния и заголовок ответа.
2. Фильтр:
(1) Фильтр может предварительно обработать запросы пользователей, прежде чем запрос достигнет сервлета, или также может обрабатывать ответы HTTP при выходе из сервлета
(2) Перед выполнением сервлета сначала выполните программу фильтра и выполните некоторую работу по предварительной обработке для него.
(3) Измените запрос и ответ в соответствии с потребностями программы
(4) Перехватывает выполнение сервлета после того, как серзс вызван.
3. Списокер:
8 Интерфейсы слушателя представлены в спецификации Servlet2.4, которые можно разделить на три категории, следующим образом:
(1) Интерфейс Listne R, связанный с ServletContext. В том числе: ServletContextListener, ServletContextAtTributeListener
(2) Интерфейс Listner, связанный с Httpsession. В том числе: httpsessionListner, httpsessionAttributeListener, httpsessionBindingListener, httpsessionActivationListener
(3) Интерфейсы слушателя, связанные с ServletRequest, в том числе: ServletRequestListner, ServletRequestattributeListener
4. разница
1.servlet: процесс сервлета короткий. После передачи URL он обрабатывается, а затем возвращается или перевернут на страницу, указанную вами. Он используется в основном для управления до обработки бизнеса.
2. Фильтр: процесс резьбовой. После передачи URL -адреса после проверки исходный процесс может быть сохранен вниз и получен следующим фильтром, сервлетом и т. Д., И после обработки сервлета он не будет продолжать передаваться вниз.
Функция фильтра может использоваться для поддержания процесса исходным способом или для доминирования в процессе, в то время как функция сервлета в основном используется для доминирования процесса. Фильтр можно рассматривать как дополнение к сервлету (мягкая вытирания).
Фильтр можно считать «вариантом» сервлета. Он в основном используется для предварительного обработки запросов пользователей, а также может поступить Httpservletresponse. Это типичная цепочка обработки.
Разница между ним и сервлетом заключается в том, что он не может генерировать ответ непосредственно для пользователя.
Полный процесс: Filter Preprocesses запросы пользователей, затем передает запросы сервлете для обработки и генерирует ответ и, наконец, фильтровать пост-обработки ответа сервера.
3. Соответствующие правила
Когда запрос отправляется в контейнер сервлета, контейнер сначала вычтет запрошенный URL -адрес по текущему пути контекста приложения в качестве URL -карты сервлета. Например, я посещаю http: //localhost/test/aaa.html (контекст моего приложения - тест).
Контейнер удалит http: // localhost/tes и использует оставшуюся часть /аааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа
Примечание. Существуют определенные правила для этого процесса сопоставления отображения, и каждый матч в конечном итоге будет соответствовать только одному сервлету. (Это отличается от фильтра)
Правила сопоставления сервлетов: когда сервлет успешно соответствует, он не будет совпадать дальше
Точное соответствие пути:
Пример: например, URL-паттерн Сервлеты IS /TEST, а URL-паттерн ServletB IS /*. В настоящее время, если доступ к URL I является http: // localhost/test,
В настоящее время контейнер сначала выполнит точное соответствие пути и обнаружит, что /тест точно соответствует Servleta, поэтому вызовите Servleta и не будет обращать внимание на другие сервлеты.
Сопоставление самого длинного пути:
Пример: URL-паттерн Servleta IS/test/*, а URL-паттерн ServletB-/test/a/*. При доступе к http: // localhost/test/a,
Контейнер выберет сервлет с самым длинным путем для совпадения, который является сервисным плаванием здесь.
Сопоставление расширения: если последний сегмент URL содержит расширение, контейнер выберет соответствующий сервлет на основе расширения.
Пример: URL-Pattern of Servleta: *.
4. Сервты и фильтры предназначены для URL -адресов и т. Д., В то время как слушатели нацелены на объекты, такие как создание сеансов и возникновение Session.Setattribute, и делают что -то, когда происходят такие события.
Может использоваться для: Spring интегрирует стойки, вводит атрибуты в действие стойки, реализует задачи синхронизации веб -приложений, статистику по количеству онлайн -пользователей и т. Д.
5. Interceptor Interceptor, аналогичный фильтру, но настроен на struts.xml, не в web.xml, а не для URL, а для действия. Когда страница представляет действие,
Выполнение операций фильтрации эквивалентно механизму плагина, предоставленного Struts1.x. Его можно рассматривать как первый фильтр, предоставляемый struts1.x, а перехватчик - это фильтр, предоставляемый Struts2.
Отличия от фильтра:
(1) Он не настроен в web.xml, но настроен на struts.xml, и с действием (2) само действие может указать, какой перехватчик использует для того, чтобы сделать вещи, прежде чем его получить
6. Разница и связь между фильтрами и перехватчиками в Struts2:
(1) Interceptor предоставляется Struts2, а фильтры предоставляются стандартом сервлета
(2) перехватчик перехватывает целевой метод целевого действия, в то время как фильтры нацелены на различные веб -ресурсы
(3) Interceptor настроен на struts.xml, а фильтр настроен в файле web.xml
(4) Перехватчики организованы вместе с использованием стека перехватчиков, а фильтры связаны вместе в соответствии с перехваченными ресурсами. Порядок выполнения определяется их позицией в файле конфигурации.
(5) Перехватчики основаны на механизме отражения Java, в то время как фильтры основаны на образец функции.
(6) Фильтры зависят от контейнеров сервлетов, в то время как перехватчики не зависят от контейнеров сервлетов.
(7) Перехватчики могут работать только по запросам действий, в то время как фильтры могут работать почти по всем запросам.
(8) Перехватчик может получить доступ к объектам в контексте действия и стеке значений, но фильтр не может.
(9) В течение жизненного цикла действия перехватчик можно назвать несколько раз, в то время как фильтр можно назвать только один раз при инициализировании контейнера.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!