Картографиране на филтри в Web.xml
Какво е JSP филтри?
- Филтрите в web.xml се използват за филтриране на функционалността на Java уеб приложение.
- Те прихващат заявките от клиента, преди да се опитат да получат достъп до ресурса
- Те манипулират отговорите от сървъра и изпратените до клиента.
Видове филтри в JSP
- Филтри за удостоверяване
- Филтри за компресиране на данни
- Филтри за криптиране
- MIME верижни филтри
- Филтри за регистриране
- Токенизиращи филтри
Филтрите са дефинирани в web.xml и те са карта към сървлет или JSP. Когато JSP контейнерът стартира с уеб приложението, той създава екземпляра на всеки филтър в web.xml, който е деклариран в дескриптора за разполагане.
Методи за филтриране на JSP
Следват методите за филтриране:
Public void doFilter(ServletRequest, ServletResponse, FilterChain)
Това се извиква всеки път, когато се предава заявка/отговор от всеки клиент, когато се изисква от ресурс.
Публично невалидно инициализиране (FilterConfig)
Това означава, че филтърът в JSP е пуснат в експлоатация
Публично празно унищожаване ()
Това означава, че филтърът е изваден от експлоатация.
Пример
В този пример създадохме филтър и го картографирахме Java филтър 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 object)) и получаваме отдалечения адрес на клиента и отпечатваме на конзолата, а също така отпечатваме дата и час на конзола.
Кодов ред 33-37: Тук използваме init метод, където вземаме init параметъра и отпечатваме init параметъра в конзолата.
Web.xml
Кодов ред 10-11: Картографиране на филтри в web.xml за GuruFilter с името на класа GuruFilter.java, където имаме име на филтър като GuruFilter и филтърен клас, който е път на директория на клас GuruFilter
Кодов ред 13-15: Картографиране на началния параметър с име guru-param и получаване на стойността му, която е поставена под етикета на филтъра, така че този init-параметър е дефиниран за gurufilter
Изход:
Когато изпълните горния код, получавате следния изход:
- Резултатът е Test Param от init параметъра
- И извличане на IP адрес, дата и час от него.