2010-09-10 24 views
7

एक यूआरएल की रूट पर फ़िल्टर कैसे मैप किया जा सकता है? मैं टोमकैट 7.0.2 का उपयोग कर रहा हूं और ROOT.war के रूप में एप्लिकेशन को तैनात कर रहा हूं। स्वागत पृष्ठ sign_in.xhtml है। जब भी क्लाइंट साइट की रूट (यानी केवल डोमेन नाम) के लिए अनुरोध भेजता है, या जब ग्राहक sign_in.xhtml अनुरोध करता है तो मैं एक फ़िल्टर चलाने के लिए चाहता हूं। यहाँ मैं अब तक है: sign_in.xhtml के लिएसर्वलेट फ़िल्टर यूआरएल मैपिंग

<filter> 
     <filter-name>My filter</filter-name> 
     <filter-class>com.myApp.myFilter</filter-class>   
    </filter> 
    <filter-mapping> 
     <filter-name>My filter</filter-name> 
     <url-pattern>/sign_in.xhtml</url-pattern> 
    </filter-mapping> 

अनुरोधों को सीधे, सफलतापूर्वक फिल्टर आह्वान है, लेकिन मुझे यकीन है कि जड़ फिल्टर आह्वान करने के लिए के लिए अनुरोध प्राप्त करने के लिए नहीं कर रहा हूँ। सर्वलेट कल्पना के अनुसार (संस्करण 3.0) डिफ़ॉल्ट सर्वलेट को

<url-pattern>/</url-pattern> 

नक्शे, और जड़ तक कोई रिक्त स्ट्रिंग नक्शे।

"रिक्त स्ट्रिंग (" ") एक विशेष URL पैटर्न है कि वास्तव में आवेदन के संदर्भ जड़, यानी करने के लिए नक्शे, प्रपत्र http://host:port//इस मामले में पथ की जानकारी का अनुरोध किया गया है:। यहाँ कल्पना से प्रासंगिक अनुभाग है '/' है और सर्वलेट पथ और संदर्भ पथ खाली स्ट्रिंग ("") है। "

हालांकि, निम्नलिखित यूआरएल पैटर्न दोनों टॉमकैट को अपवाद फेंकने का कारण बनते हैं।

<url-pattern></url-pattern> 
<url-pattern>""</url-pattern> 

मैं यह वास्तव में सराहना करते हैं अगर किसी को इस पर कुछ प्रकाश डाला सकता है। धन्यवाद।

एंड्रयू

उत्तर

7

<url-pattern>/</url-pattern> जड़ पर अनुरोधों के लिए काम करना चाहिए। क्या तुमने कोशिश की?

यदि आपका इरादा सभी अनुरोधों को फ़िल्टर करने के लिए अधिक है, तो आपको <url-pattern>/*</url-pattern> का उपयोग करना चाहिए।


अद्यतन: एक और अन्य निकालने के लिए, मैं बिलाव 7 पर / की url-pattern परीक्षण किया (web.xml और @WebFilter(urlPatterns={"/"}) दोनों का प्रयोग करके) और उम्मीद के रूप में यह वास्तव में काम नहीं किया। url-pattern/ हालांकि टॉमकैट 6 (सर्वलेट 2.5) और ग्लासफ़िश v3 (सर्वलेट 3.0) पर भी अपेक्षित काम करता है। मुझे टॉमकैट 7 में एक बग पर संदेह है, इसलिए मैंने इस बारे में issue 49914 की सूचना दी है।

+0

इस बलुससी में देखने के लिए धन्यवाद। यदि उपयोगकर्ता को अपना पासवर्ड बदलना है तो मैं पुनर्निर्देशन को मजबूर करना चाहता हूं। एक फिल्टर उचित समाधान की तरह लगता है। मुझे लगता है मुझे 7.0.3 के लिए इंतजार करना होगा या कुछ अलग के साथ आना होगा। कोई विचार? –

+0

'/ *' पर एक फ़िल्टर सुनना जो केवल यूआरआई खाली होने पर कार्रवाई करता है। – BalusC

+0

मैं इसे जाने दूंगा और फिर टॉमकैट बग ठीक होने के बाद यूआरएल-पैटन अपडेट कर दूंगा। –

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