1. В приложении весны мы имеем два использования фильтрации, один - это перехватчик, а другой, конечно, является фильтром. Мы представим использование фильтров в Springboot здесь. Использование фильтров в SpringMVC в основном такое же, но в конфигурации есть небольшая разница.
2. Функция фильтра позволяет пользователям изменять запрос и изменить ответ. Фильтр не является сервлетом, он не может генерировать ответ. Он может предварительно обработать запрос до того, как запрос достигнет сервлета, или может обрабатывать ответ при выходе из сервлета. Другими словами, фильтр на самом деле является «цепочкой сервлета» (цепь сервлетов).
Фильтр включает в себя:
1) перехват до вызванного сервлета;
2) Проверьте запрос сервлета до вызова сервлета;
3) изменить заголовок запроса и запрос данных по мере необходимости;
4) изменить данные заголовка и ответа по мере необходимости;
5) перехватывается после того, как сервлет называется.
1. Сценарии приложения фильтра
Благодаря пониманию фильтров фильтров мы можем знать, что некоторая обработка может быть сделана в следующих трех ситуациях:
1> Решите, необходимо ли получить целевой ресурс, контролируя вызов в метод цепочки.dofilter.
Например, вы можете проверить в разрешениях пользователей и т. Д. Определить, имеет ли пользователь разрешение на доступ к определенным ресурсам, имеет разрешение на выпуск и не выполняет метод Cheape.dofilter без разрешения.
2> Некоторые цели достигаются путем выполнения некоторой обработки перед вызовом метода heape.dofilter.
Например, решите проблему искаженного кода Китая и т. Д. Перед методом Dofilter можно выполнить кодирование кодирования и ответа запроса настроек. Вы даже можете инкапсулировать и украсить интерфейс запроса, чтобы решить китайскую искаженную задачу метода запроса GET (переписать соответствующий метод запроса. GetParameter).
3> Некоторые цели достигаются путем выполнения некоторой обработки после вызова в цепочке. Dofilter Method.
Например, сжатие всего веб -сайта. Прежде чем вызовать метод chain.dofilter, инкапсулировать и украсить объект ответа классом A, переопределить getOutputStream и переопределить метод getWriter. Внутри класса A выходной контент кэшируется в потоке BytearRayOutputStream, а затем после выполнения метода цепочки.dofilter выполняется данные кеша потока BytearRayOutputStream в классе A и сжаты с помощью потока GzipoutputStream.
2. Принцип перехвата фильтра
В интерфейсе фильтра есть метод Dofilter. Когда разработчик записывает класс фильтров для реализации метода DoFilter и настраивает, какой веб -ресурс перехватывает, веб -сервер сначала вызовет метод DoFilter фильтра, прежде чем вызовать метод службы веб -ресурса (определяемый механизмом внутреннего доступа сервера).
3. Правила фильтрации
// фильтровать все ресурсы в приложении. Все файлы в корне текущего приложения включают все файлы под многоуровневым подкаталогом. Обратите внимание, что * предшествует "/" Registration.AddurlPatterns ("/ *"); // Отфильтровать указанные ресурсы файлов типа, все файлы HTML в корне текущего приложения. Примечание: нет "/" до *.html, в противном случае регистрация ошибок. Addurlpatterns (". Html"); // фильтровать все файлы под указанным каталогом. Все файлы в подкатарии folder_name (могут быть многоуровневым подкаталогом) под корнем текущего приложения. Addurlpatterns ("/forter_name/*"); // Фильтруя указанную регистрацию файла.addurlPatterns ("/index.html");Iii. Приложение
@Component @servletcomponentscan @webfilter (urlpathterns = "/login/*", filtername = "loginfilter") открытый класс. Внедряет фильтр {@override public void init init (filterConfig FilterConfig) THRESERPESTESTEXPECTERSERSERSESTESPESTESPESTESPESTESPESTESPESTESPESTESPESTESPESTESTEXPERSE {} @Override public voidsesesesesesesese. Servletresponse, FilterChain FilterChain) Throws IoException, ServletException {} @Override public void destress () {}}4. Объяснение:
1. Цель этого аннотации @Component - передать логинфильтер в контейнер для обработки. То есть сделать вход
2. @servletcomponentscan Это используется для сканирования @webfilter, чтобы заставить @webfilter работать. Конечно, также возможно объяснить проводную трубку сервлета. Этот @ServletComponentsCan лучше всего удалить приложение, общую конфигурацию. У меня здесь только один фильтр, поэтому я не писал его в приложении.
3. @webfilter имеет очевидное использование. Какая ссылка используется для фильтрации и почему имя фильтра?
5. Краткое введение в использование фильтра в Springmvc
1. Метод написания все же. Он наследует фильтр для реализации 3 методов для его обработки.
2. бросьте его в контейнер: это нужно настроить в web.xml
<filter> <filter-name> loginfilter </filter-name> <filter-class> com.troy.boot.filter.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> loginfilter </filter-mame> <url-pattern>/*</url-pattern> </filter-mame> <url-pattern>/*</url-pattern>
3. Вы можете изучить конкретное использование самостоятельно.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.