Quali sono le differenze tra l'utilizzo di un filtro servlet e un listener di contesto servlet?Qual è la differenza tra un filtro servlet e un listener di contesto servlet?
Quando useresti l'uno o l'altro?
Quali sono le differenze tra l'utilizzo di un filtro servlet e un listener di contesto servlet?Qual è la differenza tra un filtro servlet e un listener di contesto servlet?
Quando useresti l'uno o l'altro?
A Filter
intercetta su richieste HTTP corrispondenti al proprio pattern URL e consente di modificarle. Vedere anche la sua javadoc:
Un filtro è un oggetto che esegue operazioni di filtro sia sulla richiesta di una risorsa (un servlet o contenuto statico), o sulla risposta da una risorsa, o entrambi.
I filtri eseguono il filtraggio nel metodo
doFilter
. OgniFilter
ha accesso a un oggettoFilterConfig
da cui è possibile ottenere i parametri di inizializzazione e un riferimento alloServletContext
che può utilizzare, ad esempio, per caricare le risorse necessarie per le attività di filtro.I filtri sono configurati nel descrittore di distribuzione di un'applicazione Web.
esempi che sono stati identificati per questo disegno sono:
- Filtri di autenticazione
- Registrazione e controllo Filtri
- filtri di conversione Immagine
- filtri di compressione dei dati
- Filtri di crittografia
- creazione di token Filtri
- Filtri che scatenano gli eventi di accesso alle risorse
- XSL/filtra T
- Mime-tipo a catena Filtro
A ServletContextListener
intercetta su avvio e lo spegnimento del webapp e consente di eseguire del codice all'avvio e/o spegnimento. Vedi anche la sua javadoc:
interfaccia per la ricezione di eventi di notifica circa
ServletContext
cambiamenti del ciclo di vita.Per ricevere questi eventi di notifica, la classe di implementazione deve essere sia dichiarato nel descrittore di distribuzione dell'applicazione web, annotato con
WebListener
, o inviate tramite uno dei metodi definitiaddListener
suServletContext
.Le implementazioni di questa interfaccia sono invocate nel loro metodo
contextInitialized(javax.servlet.ServletContextEvent)
nell'ordine in cui sono state dichiarate e nel loro metodocontextDestroyed(javax.servlet.ServletContextEvent)
nell'ordine inverso.
Quando utilizzare l'uno o l'altro ora dovrebbe essere ovvio. Utilizzare uno Filter
se si desidera intercettare su richieste HTTP che elaborano uno schema URL specifico perché si desidera controllare/modificare la richiesta/risposta HTTP. Usa uno ServletContextListener
se vuoi intercettare l'avvio e/o l'arresto di webapp.
Si prega di sapere dove trovare i javadoc e come interpretarli. Contengono tutte le risposte a questo tipo di domande banali.
Hai fornito molte più informazioni utili di quelle che puoi trovare nei documenti java. Quindi grazie. – BestPractices