38
<servlet> 
    <servlet-name>myservlet</servlet-name> 
    <servlet-class>workflow.WDispatcher</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>myservlet</servlet-name> 
    <url-pattern>*NEXTEVENT*</url-pattern> 
</servlet-mapping> 

ऊपर में अमान्य बिलाव के web.xml से स्निपेट है। शुरू पर URL पैटर्न *NEXTEVENT* फेंकता java.lang.IllegalArgumentException: सर्वलेट मानचित्रण

java.lang.IllegalArgumentException: अमान्य < यूआरएल पैटर्न सर्वलेट मानचित्रण में>

यह बहुत सराहना की जाएगी अगर कोई त्रुटि में संकेत कर सकते हैं।

उत्तर

89
<url-pattern>*NEXTEVENT*</url-pattern> 

URL प्रतिमान मान्य नहीं है। यह या तो तारांकन में समाप्त हो सकता है या एक से शुरू हो सकता है (फ़ाइल एक्सटेंशन मैपिंग को इंगित करने के लिए)।

यूआरएल पैटर्न विनिर्देश:

  • एक स्ट्रिंग एक '/' वर्ण के साथ शुरुआत और एक '/ *' प्रत्यय के साथ समाप्त पथ मैपिंग के लिए प्रयोग किया जाता है।
  • '*।' उपसर्ग के साथ शुरू होने वाली स्ट्रिंग को मैपिंग के रूप में उपयोग किया जाता है।
  • केवल एक '/' वर्ण वाली स्ट्रिंग एप्लिकेशन के "डिफ़ॉल्ट" सर्वलेट को इंगित करती है। इस मामले में सर्वलेट पथ अनुरोध है यूआरआई संदर्भ पथ और पथ जानकारी शून्य है।
  • अन्य सभी तारों का उपयोग केवल सटीक मिलान के लिए किया जाता है।

देखें अधिक जानकारी के लिए Java Servlet Specification संस्करण 3.1 की धारा 12.2।

+3

यहां सर्वलेट मैपिंग का एक अच्छा स्पष्टीकरण है: http://javapapers.com/servlet/what-is-servlet-mapping/ – ripper234

1

एक वर्कअराउंड जो प्राप्त कर सकता है वह यूआरएल पुनः लिखने के लिए एक सर्वलेट फ़िल्टर जोड़ना है उदा। पुनः लिखना अगला/NEXTEVENT/(अगला से पहले एक)/ (अगला के बाद एक) या कुछ इसी तरह के लिखें।