In che ordine sono i metodi Servlet.init() e Filter.init() chiamati nell'applicazione web java? Quale è chiamato prima? Tutti i metodi Servlet.init() chiamati prima di qualsiasi metodo Filter.doFilter?Servlet.init() e Filter.init() sequenza chiamate
risposta
I filtri vengono sempre inizializzati durante l'avvio di Webapp nell'ordine in cui sono definiti nello web.xml
.
I servlet vengono inizializzati di default durante la prima richiesta HTTP solo sul proprio modello di URL. Ma puoi anche configurarli per inizializzarli durante l'avvio di webapp usando le voci <load-on-startup>
in cui puoi specificare la loro priorità. Saranno quindi caricati nell'ordine prioritario.
E.g.
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>mypackage.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
Se vi sono più servlet con lo stesso ordine di priorità, allora l'ordine di caricamento per i servlet è specificato e possono essere arbitraria. Le servlet sono comunque inizializzate in qualsiasi modo dopo l' l'inizializzazione dei filtri, ma prima del invocazione dei filtri.
- Per tutti i filtri:
Filter.init()
- Per tutti i servlet con '' in
web.xml
:Servlet.init()
- Per tutti i filtri applicabili per la richiesta:
Filter.doFilter()
- Se servlet applicabile non già inizializzata :
Servlet.init()
- Per servlet applicabile:
Servlet.service()
contraddice la risposta di BalusC, che avrebbe il tuo (4) accadere prima (3). –
(2) è per servlet che hanno il caricamento all'avvio nel web.xml. (4) è per servlet che sono inizializzati alla prima richiesta al servlet. – downeyt
Solo una nota a margine - ho sperimentato su Tomcat (7.0.30) che i metodi Filter.init() vengono eseguiti in ordine casuale (iterazione su HashMap).
Questo dovrebbe essere un commento. –
Sì, lo so, ma non posso commentare perché non ho abbastanza reputazione. Ma ho pensato che vale la pena ricordare che la risposta accettata sembra essere sbagliata in questo aspetto (che è l'ordine di chiamare il metodo Filter.init() è generalmente indefinito) –
Attenzione. Ho assistito all'invocazione simultanea di Filter.init() e Filter.doFilter() sulla stessa istanza. Sono ancora scioccato e non posso recuperare. Il suo nome è Jetty.
- 1. Punti sequenza in chiamate C/funzione
- 2. Come il kernel determina la sequenza di chiamate __init
- 3. Sequenza delle chiamate del costruttore in ereditarietà multipla
- 4. Sequenza di Form_Activate() e Form_Load() in VB6
- 5. Python: Differenza tra filtro (funzione, sequenza) e mappa (funzione, sequenza)
- 6. differenza tra chiamate asincrone e chiamate asincrone io in .net
- 7. Chiamate API Mocking e Win32
- 8. diagramma di sequenza
- 9. Come richiamare le chiamate dai costruttori nei diagrammi di sequenza UML?
- 10. Come posso testare la sequenza di chiamate di funzione da Sinon.js?
- 11. Come posso affermare le chiamate che accettano gli argomenti di sequenza con Python Mock?
- 12. trovare e sostituire sequenza numerica in r
- 13. boost :: spirit :: qi e variabili fuori sequenza
- 14. Angular Watch e sequenza di eventi ng-
- 15. genera sequenza casuale e trama in R
- 16. sequenza jquery fadeOut e quindi rimuovere
- 17. Scala sequenza futura e gestione del timeout
- 18. cpuid + rdtsc e esecuzione fuori sequenza
- 19. sequenza Josephus
- 20. Ordine di costruttori membro e chiamate distruttore
- 21. miscelazione eccellenti e classici chiamate in Python
- 22. ViewPatterns e più chiamate a Haskell
- 23. Chiamate di sistema Linux e modalità kernel
- 24. Transazioni PDO e chiamate di funzioni
- 25. Ottimizzazione del ritorno e chiamate al distruttore
- 26. Garbage Collection e chiamate asincrone/Oggetti futuri
- 27. Best practice con jQuery e chiamate AJAX
- 28. Serializzazione Json.NET pre e post chiamate
- 29. Evitare indirezione e metodo ridondante chiamate
- 30. Risolutore di chiamate di chiamate C++
Se ho impostato load-on-startup in web.xml, posso essere certo che questo servlet init() sia chiamato prima di doFilter di qualsiasi filtro? – martsraits
Sì, l'ho modificato. Ciò è comunque a prescindere da "caricamento all'avvio". – BalusC
+1 molto utile thx. – kukudas