2010-11-14 16 views
10

मुझे जेएसपी के साथ कुछ छोटे कार्य करने की आवश्यकता है; जेएसपी के लिए बहुत नया होने के नाते मैं सोच रहा था कि HTTP अनुरोध से केवल प्राप्त करने की कोई संभावना थी या नहीं या केवल POST HTTP अनुरोध से पैरामीटर प्राप्त करें।जेएसपी, जीईटी और पोस्ट पैरामीटर

मैंने ServletRequest.getParameter (और समान) देखा है, लेकिन ऐसा लगता है कि उन तरीकों को और POST पैरामीटर दोनों मिलते हैं। क्या यूआरएल या अनुरोध निकाय को पार्स किए बिना उनमें से केवल एक ही प्राप्त करने का कोई तरीका है? और यदि नहीं, तो क्या कोई प्राथमिकता नियम है जो मान ओवरराइट करता है (जैसे POST पैरामीटर हमेशा जीईटी पैरामीटर ओवरराइट करते हैं)?

+0

के बीच चुन सकते हैं यह वास्तव में एक कोड गंध है। कार्यात्मक आवश्यकता क्या है? क्यों न केवल GET और POST को एक अलग नाम दें? – BalusC

+0

@ बालससी: यह वास्तव में एक सुरक्षा मुद्दा है। विशिष्ट मानकों को केवल POST पैरामीटर (या क्रमशः जीईटी) के रूप में भेजा जाना आवश्यक है, अंतिम उपयोगकर्ता के लिए सुरक्षा में सुधार करता है। और मैं वास्तव में किसी भी प्रकार के पैरामीटर को अंधाधुंध रूप से स्वीकार नहीं करना चाहता हूं क्योंकि मैंने इससे पहले वेब अनुप्रयोग बनाने के वर्षों में बचने के लिए सीखा है। – poke

+0

फिर अनुरोध विधि निर्धारित करें या एक सर्वलेट लागू करें जो आपको केवल एक निश्चित विधि पर कोड निष्पादित करने में सक्षम बनाता है। बोझो का जवाब देखें। – BalusC

उत्तर

13

आम तौर पर, अनुरोधों को सर्वलेट में बेहतर तरीके से संभाला जाना चाहिए। दोनों को अलग करने के लिए उनके पास doGet(request, response) और doPost(request, response) विधियां हैं।

यदि आप वास्तव में जेएसपी में ऐसा करने का आग्रह करते हैं, तो आप request.getMethod() का उपयोग करके विधियों को अलग कर सकते हैं। यह GET या POST वापस करेगा।

चूंकि यह होमवर्क है, मुझे लगता है कि बिंदु सीखना है कि servlets और उनके doX विधियों का उपयोग कैसे करें, इसलिए इसे इस तरह से करें।

अद्यतन: आप कर सकते हैं क्वेरी स्ट्रिंग (request.getQueryString()) है, जो केवल प्राप्त मानकों है मिलता है, और उसे पार्स लेकिन मुझे लगता है कि एक आम और अच्छी आदत है नहीं कहेंगे।

+0

हां, लेकिन याद रखें कि आप POSTs पर यूआरएल पैरामीटर शामिल कर सकते हैं, इसलिए प्राथमिकता और उत्पत्ति के बारे में सवाल अभी भी एक सर्वलेट में लागू होता है (जो, ज़ाहिर है, जेएसपी बन जाता है)। –

+0

हमें जेएसपी का उपयोग करने की आवश्यकता है; और नहीं, इसके पीछे कारण के बारे में कुछ भी न करें क्योंकि यह होमवर्क है। पाठ्यक्रम सिर्फ यादृच्छिक रूप से नई प्रौद्योगिकियों को लाता है और चाहता है कि हम पिछले निर्देशों के बिना इसके साथ कुछ करना चाहते हैं आदि। और हाँ, टी.जे. के रूप में। पाउडर ने कहा, आप अभी भी POST अनुरोध में पैरामीटर सेट कर सकते हैं। – poke

+0

@poke मेरा अपडेट देखें। – Bozho

4

जेएसपी में, आप अनुरोध ऑब्जेक्ट को यह निर्धारित करने के लिए देख सकते हैं कि यह किस प्रकार का अनुरोध था (प्राप्त करें या पोस्ट करें), लेकिन केवल एक पैरामीटर मानचित्र है।

-2

[सर्वलेट + जेएसपी] आज़माएं। सर्वलेट पर आप doPost() या doGet()

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