Filtrovat mapuping ve Web.xml

โšก Chytrรฉ shrnutรญ

Filtrovat mapuping v souboru Web.xml definuje, jak filtry JSP zachycujรญ poลพadavky klientลฏ a odpovฤ›di serveru v Java webovรก aplikace. Registruje kaลพdรฝ filtr v deskriptoru nasazenรญ, coลพ umoลพลˆuje ovฤ›ล™ovรกnรญ, protokolovรกnรญ, kompresi a ลกifrovรกnรญ pล™ed pล™รญstupem k prostล™edkลฏm.

  • ๐Ÿงฉ Definice filtru: Komponenta web.xml, kterรก filtruje poลพadavky a odpovฤ›di v Java webovรก aplikace.
  • ๐Ÿ” Typy filtrลฏ: Ovฤ›ล™ovรกnรญ, komprese dat, ลกifrovรกnรญ, MIME ล™etฤ›zec, protokolovรกnรญ a tokenizaฤnรญ filtry.
  • โš™๏ธ Metody ลพivotnรญho cyklu: Funkce init() spustรญ filtr, funkce doFilter() se spouลกtรญ na poลพadavek a funkce destroy() jej odstranรญ z provozu.
  • ๐Ÿ—บ๏ธ Mapaping: Filtr a mapa filtrลฏping tagy propojujรญ tล™รญdu filtru s URL vzor ve web.xml.
  • ๐Ÿงช Pล™รญklad: GuruFiltr zaznamenรกvรก IP adresu klienta, datum a ฤas a potรฉ pล™edรก poลพadavek ล™etฤ›zci filtrลฏ.

Filtrovat mapuping ve Web.xml

Co jsou JSP filtry?

  • Filtry ve web.xml se pouลพรญvajรญ k filtrovรกnรญ Java webovรก aplikace.
  • Zachytรญ poลพadavky od klienta jeลกtฤ› pล™edtรญm, neลพ se pokusรญ o pล™รญstup k danรฉmu zdroji.
  • Manipulujรญ s odpovฤ›ฤmi ze serveru a odeslanรฝmi klientovi.

Filtry jsou definovรกny v web.xml a jsou mapou na servlet resp JSP. Kdyลพ se kontejner JSP spustรญ s webovou aplikacรญ, vytvoล™รญ instanci kaลพdรฉho filtru v souboru web.xml, kterรฝ byl deklarovรกn v deskriptoru nasazenรญ.

Typy filtrลฏ v JSP

JSP podporuje nฤ›kolik typลฏ filtrลฏ, z nichลพ kaลพdรฝ ล™eลกรญ specifickรฝ problรฉm v cyklu poลพadavek-odpovฤ›ฤ:

  • Autentizaฤnรญ filtry
  • Filtry pro kompresi dat
  • ล ifrovacรญ filtry
  • MIME ล™etฤ›zovรฉ filtry
  • Filtry protokolovรกnรญ
  • Tokenizaฤnรญ filtry

Metody filtrovรกnรญ JSP

Jakmile znรกte typy filtrลฏ, je uลพiteฤnรฉ pochopit metody, kterรฉ ล™รญdรญ jejich ลพivotnรญ cyklus. Nรกsledujรญ metody filtrovรกnรญ:

Public void doFilter(ServletRequest, ServletResponse, FilterChain)

To je volรกno pokaลพdรฉ, kdyลพ je poลพadavek/odpovฤ›ฤ pล™edรกn od kaลพdรฉho klienta, kdyลพ je poลพadovรกn ze zdroje.

Public void init (FilterConfig)

To znamenรก, ลพe filtr v JSP je uveden do provozu.

Veล™ejnรฉ void zniฤit()

To znamenรก, ลพe filtr byl vyล™azen z provozu.

Pล™รญklad

V tomto pล™รญkladu jsme vytvoล™ili filtr a namapovali jej Java Filtr 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>

Vysvฤ›tlenรญ kรณdu

Gurufilter.java

Code ล˜รกdek 17โ€“32: Zde pouลพรญvรกme metodu โ€ždoFilterโ€œ, kde zรญskรกvรกme objekt poลพadavku (v naลกem pล™รญkladu je objektem poลพadavku req (objekt HttpServletRequest)), zรญskรกvรกme vzdรกlenou adresu klienta a vypisujeme ji na konzoli a takรฉ datum a ฤas.

Code ล˜รกdek 33โ€“37: Zde pouลพรญvรกme metodu init, kde bereme parametr init a vypรญลกeme jej do konzole.

Web.xml

Code ล˜รกdek 10โ€“11: Filtrovat mapuping ve web.xml pro GuruFiltrovat podle nรกzvu tล™รญdy GuruFilter.java, kde mรกme nรกzev filtru jako GuruFiltr a tล™รญda filtru, kterรก je cestou k adresรกล™i GuruTล™รญda filtru.

Code ล˜รกdek 13โ€“15: Mapaping inicializaฤnรญ parametr s nรกzvem guru-param a zรญskรกnรญ jeho hodnoty, kterรก je umรญstฤ›na pod znaฤkou filter, takลพe tento inicializaฤnรญ parametr byl definovรกn pro gurufilter.

Vรฝstup:

Kdyลพ spustรญte vรฝลกe uvedenรฝ kรณd, zรญskรกte nรกsledujรญcรญ vรฝstup:

Metody filtrovรกnรญ JSP

  • Vรฝstupem je Test Param z parametru init
  • A naฤtenรญ IP adresy, data a ฤasu.

Nejฤastฤ›jลกรญ dotazy

Servlet zpracovรกvรก a generuje odpovฤ›ฤ na poลพadavek, zatรญmco filtr zachycuje poลพadavky a odpovฤ›di za รบฤelem provedenรญ pล™edbฤ›ลพnรฉho nebo nรกslednรฉho zpracovรกnรญ, jako je ovฤ›ล™ovรกnรญ nebo protokolovรกnรญ, aniลพ by sรกm generoval koneฤnou odpovฤ›ฤ.

Filtry se spouลกtฤ›jรญ v poล™adรญ, v jakรฉm jsou jejich mapy filtrลฏping Zรกznamy se zobrazujรญ v souboru web.xml. Kontejner je ล™etฤ›zรญ, takลพe prvnรญ namapovanรฝ filtr se spustรญ jako prvnรญ na poลพadavku a jako poslednรญ na odpovฤ›di.

JSP filtr mรก tล™i metody ลพivotnรญho cyklu: init() pro inicializaci filtru, doFilter() pro zpracovรกnรญ kaลพdรฉho poลพadavku a odpovฤ›di a destroy() pro uvolnฤ›nรญ zdrojลฏ, kdyลพ je filtr odebrรกn z provozu.

Umฤ›lรก inteligence dokรกลพe analyzovat zรกsobnรญk traces, detekce nesprรกvnรฉ mapy filtrลฏping objednรกvat, navrhovat chybฤ›jรญcรญ inicializaฤnรญ parametry a odhalovat รบzkรก mรญsta ve vรฝkonu v logice doFilter, helping vรฝvojรกล™i ล™eลกรญ problรฉmy s filtry rychleji bฤ›hem testovรกnรญ a kontroly kรณdu.

Ano. Umฤ›lรก inteligence dokรกลพe generovat filtr a mapu filtrลฏ ve formรกtu web.xml.ping poloลพky z popisu poลพadovanรฉho chovรกnรญ, vฤetnฤ› URL vzory a inicializaฤnรญ parametry, kterรฉ pak vรฝvojรกล™i kontrolujรญ a upravujรญ pro svou aplikaci.

Shrลˆte tento pล™รญspฤ›vek takto: