Čo je filter JSP?
- Filtre sa používajú na filtrovanie funkcií webovej aplikácie Java.
- Zachytávajú požiadavky klienta skôr, ako sa pokúsia získať prístup k prostriedku
- Manipulujú s odpoveďami zo servera a posielajú sa klientovi.
Typy filtrov v JSP
- Autentifikačné filtre
- Filtre na kompresiu údajov
- Šifrovacie filtre
- Reťazové filtre MIME
- Filtre na prihlásenie
- Tokenizačné filtre
Filtre sú definované v web.xml a sú mapou na servlet alebo JSP. Keď kontajner JSP začína s webovou aplikáciou, vytvorí inštanciu každého filtra, ktorý bol deklarovaný v deskriptore nasadenia.
Nasledujú metódy filtrovania:
-
Public void doFilter (ServletRequest, ServletResponse, FilterChain)
Toto sa volá vždy, keď sa od každého klienta odošle požiadavka / odpoveď, keď sa požaduje od zdroja.
-
Public void init (FilterConfig)
To znamená, že filter je uvedený do prevádzky
-
Zničenie verejnej prázdniny ()
To znamená, že filter bol vyradený z prevádzky.
Príklad:
V tomto príklade sme vytvorili filter a mapovali sme ho do súboru web.xml
Gurufilter.java
balíček 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;importovať Javax.servlet.http.HttpServletRequest;verejná trieda GuruFilter implementuje filter {public void doFilter (požiadavka ServletRequest, odpoveď ServletResponse, reťazec Filterchain) hodí IOException, ServletException {// TODO Automaticky generovaný pahýl metódyHttpServletRequest req = (HttpServletRequest) požiadavka;Reťazec ipAddress = req.getRemoteAddr ();System.out.println ("IP adresa" + ipAddress + ", čas je"+ nový dátum (). toString ());// odovzdať požiadavku pozdĺž reťazca filtrachain.doFilter (požiadavka, odpoveď);}/ *** @ pozri Filter # init (FilterConfig)* /public void init (FilterConfig fConfig) vyvolá ServletException {Reťazec guruparam = fConfig.getInitParameter ("guru-param");// Vypíše parameter initSystem.out.println ("Testovací parameter: + guruparam);}}
Web.xml
xml version = "1.0" encoding = "UTF-8"?>test GuruFilter GuruFilter demotest.GuruFilter guru-param Toto je parameter guru GuruFilter / GuruFilter
Vysvetlenie kódu:
Gurufilter.java
Riadok kódu 17-32 : Tu používame metódu „doFilter“, kde dostávame objekt žiadosti (v našom príklade je objekt žiadosti req (objekt HttpServletRequest)) a získame vzdialenú adresu klienta a tlač na konzolu a tiež tlač dátum a čas na konzole.
Riadok kódu 33-37 : Tu používame metódu init, kde berieme parameter init a tlačíme parameter init v konzole.
Web.xml
Riadok kódu 10-11 - Mapovanie GuruFilteru s názvom triedy GuruFilter.java, kde máme názov filtra ako GuruFilter a triedu filtra, čo je cesta k adresáru triedy GuruFilter
Riadok kódu 13-15 - Mapovanie parametra init s názvom guru-param a získanie jeho hodnoty, ktorá je umiestnená pod značkou filtra, takže tento parameter init bol definovaný pre gurufilter
Výkon:
Po vykonaní vyššie uvedeného kódu získate nasledujúci výstup:
- Výstupom je Test Param z parametra init
- A načítanie adresy IP, jej dátumu a času.