Что такое фильтр JSP?
- Фильтры используются для фильтрации функциональности веб-приложения Java .
- Они перехватывают запросы от клиента, прежде чем пытаются получить доступ к ресурсу
- Они манипулируют ответами с сервера и отправляют клиенту.
Типы фильтров в JSP
- Фильтры аутентификации
- Фильтры сжатия данных
- Фильтры шифрования
- Цепные фильтры MIME
- Фильтры журналирования
- Фильтры токенизации
Фильтры определены в web.xml и представляют собой карту сервлету или JSP. Когда контейнер JSP запускается с веб-приложением, он создает экземпляр каждого фильтра, который был объявлен в дескрипторе развертывания.
Ниже приведены методы фильтра:
-
Открытый void doFilter (ServletRequest, ServletResponse, FilterChain)
Это вызывается каждый раз, когда запрос / ответ передается от каждого клиента, когда он запрашивается из ресурса.
-
Public void init (FilterConfig)
Это означает, что фильтр помещен в сервис
-
Public void destroy ()
Это указывает на то, что фильтр снят с эксплуатации.
Пример:
В этом примере мы создали фильтр и отобразили в web.xml
Gurufilter.java
- package demotest;
- import java.io.IOException;
- import java.util.Date;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import Javax.servlet.http.HttpServletRequest;
- public class GuruFilter implements Filter {
- public void doFilter(ServletRequest request, ServletResponse response, Filterchain chain) throws IOException, ServletException {
- // TODO Auto-generated method stub
- HttpServletRequest req = (HttpServletRequest) request;
- String ipAddress = req.getRemoteAddr();
- System.out.println("IP Address "+ipAddress + ", Time is"
- + new Date().toString());
- // pass the request along the filter chain
- chain.doFilter(request, response);
- }
- /**
- * @see Filter#init(FilterConfig)
- */
- public void init(FilterConfig fConfig) throws ServletException {
- String guruparam = fConfig.getInitParameter("guru-param");
- //Print the init parameter
- System.out.println("Test Param: " + guruparam);
- }
- }
web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <display-name>
- test</display-name>
- <filter>
- <description>
- </description>
- <display-name>
- GuruFilter</display-name>
- <filter-name>GuruFilter</filter-name>
- <filter-class>demotest.GuruFilter</filter-class>
- <init-param>
- <param-name>guru-param</param-name>
- <param-value>This is guru paramter</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>GuruFilter</filter-name>
- <url-pattern>/GuruFilter</url-pattern>
- </filter-mapping>
Пояснение к коду:
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 и получение его значения, которое помещается под тегом filter, чтобы этот init-param был определен для gurufilter
Вывод:
Когда вы выполните приведенный выше код, вы получите следующий вывод:
- Выходные данные Test Param из параметра init
- И получение IP-адреса, дата и время его.