Що таке JSP-фільтр?
- Фільтри використовуються для фільтрації функціональних можливостей веб-програми Java.
- Вони перехоплюють запити клієнта, перш ніж спробувати отримати доступ до ресурсу
- Вони маніпулюють відповідями сервера та надсилають їх клієнту.
Типи фільтрів у JSP
- Фільтри аутентифікації
- Фільтри стиснення даних
- Фільтри шифрування
- Ланцюгові фільтри MIME
- Фільтри реєстрації
- Токеннізуючі фільтри
Фільтри визначені в web.xml, і вони є картою для сервлету або JSP. Коли контейнер JSP запускається з веб-додатком, він створює екземпляр кожного фільтра, оголошеного в дескрипторі розгортання.
Нижче наведено методи фільтрації:
-
Публічна порожнеча doFilter (ServletRequest, ServletResponse, FilterChain)
Це називається щоразу, коли запит / відповідь передається від кожного клієнта, коли він запитується з ресурсу.
-
Публічний пустий init (FilterConfig)
Це означає, що фільтр введений в експлуатацію
-
Public void знищення ()
Це означає, що фільтр вилучено з експлуатації.
Приклад:
У цьому прикладі ми створили фільтр і зіставили його в web.xml
Gurufilter.java
демотест пакету;імпортувати java.io.IOException;імпортувати java.util.Date;імпортувати javax.servlet.Filter;імпортувати javax.servlet.FilterChain;імпортувати javax.servlet.FilterConfig;імпортувати javax.servlet.ServletException;імпортувати javax.servlet.ServletRequest;імпортувати javax.servlet.ServletResponse;імпортувати Javax.servlet.http.HttpServletRequest;публічний клас GuruFilter реалізує Filter {public void doFilter (запит ServletRequest, відповідь ServletResponse, ланцюжок фільтра) викидає IOException, ServletException {// Автоматично згенерований заглушок TODOHttpServletRequest req = (запит HttpServletRequest);Рядок ipAddress = req.getRemoteAddr ();System.out.println ("IP-адреса" + ipAddress + ", час"+ нова дата (). toString ());// передаємо запит по ланцюжку фільтрівchain.doFilter (запит, відповідь);}/ *** @see Filter # init (FilterConfig)* /public void init (FilterConfig fConfig) викидає ServletException {Рядок guruparam = fConfig.getInitParameter ("guru-param");// Друк параметра initSystem.out.println ("Тест Param: + guruparam);}}
Web.xml
xml version = "1.0" encoding = "UTF-8"?><ім'я відображення>тест <фільтр><опис><ім'я відображення>GuruFilter GuruFilter demotest.GuruFilter <відображення фільтрів> гуру-парам Це параметр гуру GuruFilter / GuruFilter
Пояснення коду:
Gurufilter.java
Рядок коду 17-32 : Тут ми використовуємо метод "doFilter", де отримуємо об'єкт запиту (у нашому прикладі об'єктом запиту є req (об'єкт HttpServletRequest)) і отримуємо віддалену адресу клієнта та друк на консолі, а також друк дата та час на консолі.
Кодовий рядок 33-37 : Тут ми використовуємо метод init, де беремо параметр init та друкуємо параметр init у консолі.
Web.xml
Кодовий рядок 10-11 - Позначення GuruFilter з назвою класу GuruFilter.java, де у нас є ім'я фільтра як GuruFilter і клас фільтра, який є шляхом до каталогу класу GuruFilter
Кодовий рядок 13-15 - Зіставлення параметра init з назвою guru-param та отримання значення, яке розміщується під тегом фільтра, щоб цей init-param був визначений для gurufilter
Вихід:
При виконанні наведеного вище коду ви отримуєте такий результат:
- Результатом є Test Param з параметра init
- І отримання IP-адреси, дати та часу.