2013-06-01 9 views
7

मैं एक सर्वलेट पैटर्न है कि दोनोंसर्वलेट मानचित्रण स्लेश

/server/abcDef/1432124/adfadfasdfa 

और

/server/abcDef/abcd/12345 

मूल्यों '1,432,124' और 'एबीसीडी' कर रहे हैं से मेल खाता मैप करने के लिए कोशिश कर रहा हूँ से अलग कर दिया तय नहीं है और मूल्यों की भीड़ हो सकती है। इसलिए अनिवार्य रूप से मुझे /abcDef/*/* के खिलाफ मिलान करने की आवश्यकता है - केवल abcDef तय है।

क्या यह मेरे लिए मानचित्र बनाने का कोई तरीका है? वास्तव में मैं निम्नलिखित की तरह कुछ के लिए देख रहा हूँ:

<servlet-mapping> 
    <servlet-name>abcDefServlet</servlet-name> 
    <url-pattern>/server/abcDef/*/*</url-pattern> 
</servlet-mapping> 

उत्तर

11

Servlet Specification के अनुसार, URL प्रतिमानों के साथ समाप्त "/ *" पूर्ववर्ती पथ के लिए सभी अनुरोधों का मिलान करेंगे। तो, जिस तरह से आप यह कर रहे थे, तो आप abcDefServlet पाने के लिए निम्न यूआरएल दर्ज करनी होगी:

http://myapp.com/server/abcDef/*/<wildcard> 

क्या आप ऐसा कर सकते हैं, हालांकि एक सर्वलेट मानचित्रण में एक से अधिक URL पैटर्न भी जोड़ है। उदाहरण के लिए:

<servlet-mapping> 
    <servlet-name>abcDefServlet</servlet-name> 
    <url-pattern>/server/abcDef/1432124/*</url-pattern> 
    <url-pattern>/server/abcDef/abcd/*</url-pattern> 
</servlet-mapping> 

अद्यतन:

1432124 के बाद से

और abcd निश्चित नहीं होते मूल्यों, आप सुरक्षित रूप से निम्नलिखित मानचित्रण जोड़ सकते हैं:

<servlet-mapping> 
    <servlet-name>abcDefServlet</servlet-name> 
    <url-pattern>/server/abcDef/*</url-pattern> 
</servlet-mapping> 

और फिर जो कुछ मूल्यों का इलाज जो सर्वेट के अंदर abcDef के बाद आता है, बुद्धि एच निम्न कार्य:

req.getPathInfo() 
+0

क्षमा करें मुझे यह उल्लेख करना चाहिए था कि '1432124' और 'abcd' तय नहीं किए गए हैं और मूल्यों की भीड़ हो सकती है। इसलिए अनिवार्य रूप से मुझे/abcDef/*/* के खिलाफ मिलान करने की आवश्यकता है - केवल एबीसीडीएफ तय है। मैं अपने प्रश्न को बहुत स्पष्ट होने के लिए संपादित करूंगा। – Sai

+0

@ साई: ठीक है। मैंने अब भी जवाब अपडेट किया है। कृपया यह जाँचें। – Cassio

+2

** अद्यतन ** हिस्सा सही है। +1 – informatik01

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