Java web uygulamasında hangi sırada Servlet.init() ve Filter.init() yöntemleri çağrılır? Hangisi önce denir? Herhangi bir Filter.doFilter yönteminden daha önce çağrılan tüm Servlet.init() yöntemleri mi?Servlet.init() ve Filter.init() çağrı dizisi
cevap
Filtreler, webapp'ın başlangıcında, web.xml
'da tanımlandığı gibi sırayla her zaman başlatılır.
Servletler varsayılan olarak yalnızca ilk URL istekleri sırasında url-pattern'lerinde başlatılır. Ancak, bunları önceliklerini belirtebileceğiniz <load-on-startup>
girişlerini kullanarak webapp başlangıcı sırasında başlatmayı da yapılandırabilirsiniz. Daha sonra öncelik sırasına yüklenirler.
E.g. Aynı öncelik sırasına daha servlet'ler varsa
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>mypackage.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
, daha sonra bu servlet için yükleme sırası belirsizdir ve keyfi olabilir. Servletler, filtrelerinin başlatılmasından sonra herhangi bir şekilde başlatılmışlardır, ancak filtrelerin çağrılmasından önce . web.xml
yılında '' ile tüm servlet için Filter.init()
Servlet.init()
- uygulanabilir servlet zaten başlangıç durumuna getirmez
Filter.doFilter()
- ise :
Servlet.init()
Uygulanabilir servlet için 10
- :
Servlet.service()
BalusC'un (4) 'ünüzü daha önce (3) olan cevabıyla çelişir. –
(2), web.xml'de başlangıçta yükleme olan sunucu uygulamaları içindir. (4) ilk istekte sunucuya başlatılan servletler içindir. – downeyt
Sadece bir yan not - Ben Filter.init() yöntemleri rasgele (HashMap üzerinde yineleme) çalıştırmak olduğunu tomcat (7.0.30) ile yaşadı.
Bu bir yorum olmalı. –
Evet Biliyorum, ama yeterince itibarım olmadığı için yorum yapamam. Ama kabul edilen cevabın bu yönde yanlış göründüğünden bahsetmeye değer olduğunu düşündüm (bu, Filter.init() yönteminin çağrısının genellikle tanımsız olduğu sırasına göre değişir) –
Dikkatli olun. Ben aynı örnekte Filter.init() ve Filter.doFilter() eşzamanlı çağırma tanık oldum. Hala şok oldum ve iyileşemiyorum. Onun adı Jetty.
- 1. Bağımsız değişkenler dizisi içeren çağrı işlevi
- 2. boru çağrı ve senkronizasyon
- 3. yakut dizisi
- 4. jqPlot ve adlandırma dizisi
- 5. Birler ve sıfırlar dizisi
- 6. JavaScript ve JSON dizisi
- 7. İşlev işaretçisi ve çağrı kuralı
- 8. Çağrı()
- 9. Çağrı
- 10. codeception - acking çağrı çağrı verileri
- 11. NumPy dizisi ve basit python dizisi arasındaki fark nedir?
- 12. pthread_create çağrı işlevi
- 13. Dizisi
- 14. Çağrı fnGetData() Böyle bir çağrı yapmaya çalışıyorum
- 15. Dizisi
- 16. dizisi
- 17. Dizisi
- 18. Dizisi
- 19. Çağrı Komut İstemi ve Pencereyi Açın
- 20. Zarif Çağrı saklı yordam ve sınıf
- 21. Muğlak Çağrı
- 22. Çağrı yığını
- 23. Çağrı yardımcı yöntem aşağıdaki AJAX çağrı var
- 24. Tekrarlayıcıda çağrı
- 25. IllegalArgumentException: Çağrı
- 26. Dizgiye göre karakter dizisi dizisi
- 27. Çağrı fonksiyonu
- 28. Ajax çağrı
- 29. Dizeler dizisi dizeleri dizisi tarafından sorgu dizisi sorgulama
- 30. Perl'de karma dizisi döndürme
Web.xml'de başlangıçta yükleme ayarlamayı ayarlamış olsaydım, herhangi bir filtrenin doFilter'ından önce bu servlet'in init() çağrıldığından emin olabilir miyim? – martsraits
Evet, bunu içeride düzenledim. Ancak bu, "yükleme sırasında yükleme" ne bakmaksızın geçerlidir. – BalusC
+1 oldukça yararlı bir thx. – kukudas