2012-04-25 14 views
7

मान लें कि मेरे पास मेरे पृष्ठ पर विधि = POST के साथ एक फ़ॉर्म है। अब इस फार्म पाठ बॉक्स, चेकबॉक्स, आदि जैसे कुछ बुनियादी रूप तत्वों यह कार्रवाई यूआरएल http://example.com/someAction.do?param=valueकार्रवाई URL में क्वेरीस्ट्रिंग के साथ HTML फॉर्म POST विधि

मुझे समझ नहीं है कि यह वास्तव करने के लिए एक विरोधाभासी बात है के रूप में है है, लेकिन मेरे सवाल का यह व्यवहार में काम करेगा।

तो मेरे प्रश्न हैं;

  1. के बाद से प्रपत्र पद्धति POST है और मैं (? परम = मूल्य) मेरे यूआरएल के साथ-साथ एक क्वेरी स्ट्रिंग है इसे सही ढंग से काम करेगा? यानी मैं अपने प्राप्त पृष्ठ (someAction.do) पर param = value पुनर्प्राप्त करने में सक्षम हूं

  2. मान लें कि मैं सर्वर की तरफ के मानों तक पहुंचने के लिए जावा/जेएसपी का उपयोग करता हूं। तो सर्वर पक्ष पर मूल्य प्राप्त करने का तरीका क्या है? क्या वाक्यविन्यास पैरा = वैल्यू के मूल्य के साथ-साथ टेक्स्टबॉक्स/रेडियो बटन/चेकबॉक्स आदि जैसे फॉर्म तत्वों के लिए भी है?

+0

हां, आप किसी भी पेज पर 'POST' और' GET' चर दोनों तक पहुंच सकते हैं। उन मानों को प्राप्त करने के लिए, 'print_r ($ _ GET); 'और' print_r ($ _ POST); ' – hjpotter92

+0

जेएसपी, अधिकांश स्क्रिप्टिंग भाषाओं की तरह, जीईटी और पोस्ट वैरिएबल को अलग से एक्सेस कर सकते हैं या उन्हें एक एकल डेटासेट के हिस्से के रूप में एक्सेस कर सकते हैं ... प्रत्येक दृष्टिकोण के लिए अलग-अलग फ़ंक्शन होंगे (यदि मुझे सही याद है, तो GetParameter() विधि GET और POST पैरामीटर दोनों को ध्यान में रखेगी। Google आपको पुस्तकालयों को अलग-अलग पैरामीटर के प्रत्येक सेट तक पहुंचने में मदद कर सकता है।) – jlmcdonald

उत्तर

1

1) हां, आपके पास POST तक पहुंच होगी और आपके अनुरोध में दोनों चर शामिल होंगे। तो आप तदनुसार $ _GET ["param_name"] और $ _POST ["param_name"] का उपयोग कर सकते हैं।

2) JSP का उपयोग करके आप दोनों के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:

<%= request.getParameter("param_name") %>

आप ईएल (JSP अभिव्यक्ति भाषा) का उपयोग कर रहे हैं, तो आप भी उन्हें निम्नलिखित तरीके से प्राप्त कर सकते हैं:

${param.param_name} 

संपादित: अगर param_name दोनों अनुरोध QueryString और पोस्ट डेटा में मौजूद है, उन दोनों के मूल्यों की एक सरणी के रूप में लौटा दी जाएगी, पहले एक QueryString किया जा रहा है ।

ऐसी परिस्थिति में, getParameter("param_name) उनमें से पहले एक वापसी होगी (के रूप में समझाया here), हालांकि उन दोनों को निम्नलिखित तरीके से getParameterValues("param_name") पद्धति का उपयोग करके पढ़ा जा सकता है:, read here

String[] values = request.getParameterValues("param_name"); 

अधिक जानकारी के लिए ।

+0

आप समझते हैं प्रश्न और आप इसे ऊपर समझा सकते हैं। लेकिन मेरा सवाल यह है कि: कौन सा मान एक प्रमुख नाम के लिए प्रबल होगा जो क्वेरी स्ट्रिंग और फॉर्म में मौजूद है? – ifelsemonkey

+0

@ifelsemonkey दोनों को वापस कर दिया जाएगा: पहला प्रश्न क्वेरी स्ट्रिंग से एक है, और दूसरा पोस्ट बॉडी में से एक है। यह भी ध्यान दें कि 'getParameter() 'केवल उनमें से पहला (क्वेरी स्ट्रिंग मान प्रबल होगा) लौटाएगा, लेकिन आप निम्न में से' getParameterValues' का उपयोग करके दोनों को पढ़ सकते हैं: 'स्ट्रिंग [] लाइन = request.get पैरामीटर वैल्यूज ("नाम"); 'आगे की जानकारी के लिए, [यहां पढ़ें] (https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/ServletRequest.html#getParameter%28java.lang.String% 29)। तदनुसार मेरा जवाब संपादित किया। – Darkseal

0

हां। आप इन पैरामीटर को अपनी एक्शन क्लास में पुनर्प्राप्त कर सकते हैं। बस आपको गेटर्स और सेटर्स के साथ एक ही नाम (अपने मामले में पैरा) की संपत्ति बनाना है।

नमूना कोड

private String param; 

{... getters and setters ...} 

जब आप ऐसा करेंगे, पैरामीटर मूल्य (यूआरएल द्वारा पारित कर दिया) कि विशेष रूप से संपत्ति का ही टिककर खेल में बचाया जाएगा। और इसके माध्यम से, आप जो भी मूल्य चाहते हैं वह कर सकते हैं।

0

POST विधि उपयोगकर्ता से सबमिट किए गए फॉर्म डेटा को छिपाएं। वह नहीं देख सकता कि सर्वर पर कौन सा डेटा भेजा गया है, जब तक कोई विशेष उपकरण उपयोग नहीं किया जाता है।

GET विधि किसी को भी यह देखने की अनुमति देता है कि उसके पास कौन सा डेटा है। आप यूआरएल से डेटा आसानी से देख सकते हैं (उदा।क्वेरी स्ट्रिंग में कुंजी-मूल्य जोड़े देखकर)।

दूसरे शब्दों में यह फ़ॉर्म कार्रवाई में क्वेरी स्ट्रिंग का उपयोग कर उपयोगकर्ता को (शायद महत्वहीन) डेटा दिखाने के लिए आप पर निर्भर है। उदाहरण के लिए डेटा टेबल फ़िल्टर में। वर्तमान अंकन स्थिति को रखने के लिए, आप domain.com/path.do?page=3 का उपयोग action के रूप में कर सकते हैं। और आप input, textarea आदि जैसे फॉर्म घटकों के भीतर अन्य डेटा छुपा सकते हैं।

दोनों विधियों को सर्वर में उसी तरह से पकड़ लिया जा सकता है। उदाहरण के लिए जावा में, request.getParameter("page") का उपयोग करके।

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