2008-10-30 13 views
8

मैं जावा में क्वेरीस्ट्रिंग पैरामीटर का संग्रह प्राप्त करने के लिए एक यूआरएल पार्स करना चाहता हूं। स्पष्ट होने के लिए, मुझे किसी दिए गए यूआरएल (या यूआरएल ऑब्जेक्ट का स्ट्रिंग वैल्यू) पार्स करने की ज़रूरत है, न कि सर्वलेट अनुरोध से यूआरएल।बहिष्कृत करने के लिए वैकल्पिक javax.servlet.http.HttpUtils.parseQueryString?

ऐसा लगता है कि javax.servlet.http.HttpUtils.parseQueryString विधि स्पष्ट विकल्प होगी, लेकिन इसे हटा दिया गया है।

क्या कोई वैकल्पिक तरीका है जिसे मैं याद कर रहा हूं, या इसे समकक्ष प्रतिस्थापन/बढ़ाए गए फ़ंक्शन के बिना हटा दिया गया है?

+1

इस तरह के सरल कार्य के लिए समाधान का अभाव क्या जावा से लोगों repels है। (और यह जावा लड़के से आता है।) –

उत्तर

2

ठीक है, जैसा कि आप उल्लेख करते हैं कि यूआरएल सर्वलेट अनुरोध से नहीं आया है, सही उत्तर, सामान्य रूप से यह पर निर्भर करता है।

यूआरएल के क्वेरी भाग के साथ समस्या यह है कि पैरामीटर डुप्लिकेशन को संभालने के तरीके के बारे में कोई स्पष्ट विनिर्देश नहीं है।

http://www.example.com?param1=value1&param2=value2&param1=value3 

क्या आप param1 के मान की जगह उम्मीद करते हैं:

उदाहरण के लिए, इस तरह एक यूआरएल पर विचार? पहला मान, आखिरी वाला, एक सरणी? मुद्दा यह है कि, चश्मा के अनुसार, ये सभी उत्तर मान्य हैं और सर्वर विक्रेता इनमें से किसी एक का समर्थन करने के लिए स्वतंत्र हैं। कुछ param1 [] नोटेशन का उपयोग यह इंगित करने के लिए करते हैं कि इसे एक सरणी के रूप में माना जाना चाहिए, लेकिन फिर से, यह एक एकीकृत समाधान नहीं है।

तो "सर्वोत्तम" समाधान यह जानना है कि आपका गंतव्य कैसे संभालता है, और स्वयं निर्मित उपयोगिता वर्ग के साथ व्यवहार की नकल करता है।

+0

मुझे नहीं लगता कि ऐसी दुविधा है, स्पष्ट उत्तर सरणी है। –

+0

ठीक है, चश्मा के अनुसार, यह नहीं है। मैंने स्ट्रेट्स और स्प्रिंग के साथ एक परियोजना पर काम किया है जहां केवल अंतिम घोषणा पिछले लोगों को ओवरराइड कर रही थी। – gizmo

5

मुझे लगता है कि विचार इसके बजाय HttpServletRequest का उपयोग करना है। GetParameterMap(), getParameterNames() और getParameterValues ​​() प्रारंभ करने के तरीके हैं।

एक विशिष्ट विधि के मूल्य प्राप्त करने के लिए getParameter (स्ट्रिंग paramname) विधि भी है।

ये क्वेरीस्ट्रिंग पैरामीटर और फॉर्म पैरामीटर के बीच कोई भेद नहीं करते हैं, इसलिए यदि आपका इरादा अलग-अलग में क्वेरीस्ट्रिंग की तलाश करना था तो मुझे लगता है कि यह मदद नहीं करेगा।

+0

मुझे शायद इस सवाल में और अधिक विशिष्ट होना चाहिए था। मैं एक ऐसे यूआरएल को पार्स करने का प्रयास कर रहा हूं जो सर्वलेट अनुरोध यूआरएल नहीं है, लेकिन पैरामीटर वैल्यू (एन्कोडेड यूआरएल) या डेटाबेस रिकॉर्ड से स्ट्रिंग वैल्यू के रूप में प्राप्त किया गया है। –

0

जहां तक ​​मुझे पता है, वहां कोई नहीं है।

हालांकि खुद को लिखना बहुत कठिन नहीं होना चाहिए। सबसे कठिन हिस्सा, मैं कल्पना करता हूं, यूआरएल नाम/मानों को डीकोड कर देगा (जो वास्तव में कठिन नहीं है, अगर आप इसके बारे में सोचते हैं), और आप इसके लिए java.net.URLDecoder#decodeURL(String,String) का उपयोग कर सकते हैं।

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