2012-04-17 10 views
5

जावा ईई वेब एप्लिकेशन के लिए, मेरे पास एक श्रोता है जो ServletRequestListener और फ़िल्टर को लागू करता है।web.xml ऑर्डर या फ़िल्टर और श्रोता

क्या web.xml पर निर्दिष्ट करने का कोई तरीका है कि श्रोता श्रोता से पहले कहा जाना चाहिए?

मैंने पहले ही श्रोता, से पहले फ़िल्टर और उसकी मैपिंग घोषित करने का प्रयास किया है लेकिन श्रोता अभी भी पहले निष्पादित है।

कोई विचार? पहले किसी भी फिल्टर लागू और ServletRequestListener.requestDestroyed() सभी फिल्टर और सेवा विधि रिटर्न के बाद किया जाता है

<filter> 
    <filter-name>myfilter</filter-name> 
    <filter-class>com.example.MyFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>myfilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <listener> 
    <listener-class>com.example.MyServletRequestListener </listener-class> 
    </listener> 

उत्तर

5

ServletRequestListener.requestInitialized() प्रारंभ कर दिया जाएगा।

+1

इसलिए, फ़िल्टर.doFilter() को listener.requestInitialized() से पहले निष्पादित करना संभव नहीं है? मैं सर्वलेट 2.5 spec पढ़ रहा हूँ, लेकिन मुझे यह जानकारी नहीं मिल रही है। http://download.oracle.com/otn-pub/jcp/servlet-2.5-mrel2-eval-oth-JSpec/servlet-2_5-mrel2-spec.pdf यह समझाया गया है? –

12

ब्राउज़र (ग्राहक) सर्वर से अनुरोध, (बिलाव) की तरह कंटेनर अगर आप किसी भी श्रोता जो "ServletRequestListener" फिर "सार्वजनिक शून्य लागू करता कॉन्फ़िगर ग्राहक के अनुरोध HttpServletRequest और उत्तर वस्तु HttpServletResponse और के लिए अनुरोध वस्तु बनाते हैं requestInitialized (ServletRequestEvent sre) "विधि

फोन करेगा कंटेनर द्वारा अनुरोध और प्रतिक्रिया वस्तु के निर्माण के बाद अगर कोई अनुरोध तो श्रोता पहले निष्पादित करेंगे के लिए किसी भी श्रोता है .....

उसके बाद HttpServletRequest और HttpServletResponse को असाइन कर रहे हैं फिलर, अगर आपने फिलटर को कॉन्फ़िगर किया है ....

मतलब श्रोता सबसे पहले ServletRequest के लिए चित्र में आते हैं। तो ServletRequest मामले में श्रोता से पहले फ़िल्टर निष्पादित करने के लिए कॉन्फ़िगर करने का कोई तरीका नहीं है ....

संबंधित मुद्दे