2015-01-01 3 views
8

HTTPServletRequest अनुरोध, है एक विधि getParameterMap() लेकिन, मूल्यों के रूप मेंHTTPServletRequest getParameterMap() बनाम getParameterNames

नाम एक String [] के बजाय स्ट्रिंग की, पद के लिए डेटा = शादी & lastName = जॉन & उम्र = 20।

मैं अपने एक सरणी नहीं पोस्ट डेटा में देखते हैं, लेकिन getParameterMap() हर कुंजी (नाम या lastName या उम्र) के लिए सरणी देता है। इसे बेहतर तरीके से समझने पर कोई संकेतक? कोड दृष्टिकोण 2.

दृष्टिकोण 1 काम करता है पूरी तरह से ठीक में उपलब्ध है।

दृष्टिकोण 1:

Enumeration<String> parameterNames = req.getParameterNames(); 
while (parameterNames.hasMoreElements()) { 
    String key = (String) parameterNames.nextElement(); 
    String val = req.getParameter(key); 
    System.out.println("A= <"+key+"> Value<"+val+">"); 
} 

दृष्टिकोण 2: (java.lang.String नाम) विधि

Map<String,Object> allMap=req.getParameterMap(); 
    for(String key:allMap.keySet()){ 
     String[] strArr=(String[])allMap.get(key); 
     for(String val:strArr){ 
      System.out.println("Str Array= "+val); 
     } 
    } 

उत्तर

9

आप पूर्व निर्धारित मापदंडों की उम्मीद कर रहे हैं तो आप getParameter उपयोग कर सकते हैं।

अन्यथा ऊपर दिए गए तरीकों का इस्तेमाल किया जा सकता है। लेकिन कुछ मतभेदों के साथ,

एचटीपी अनुरोध में कोई भी के साथ एक अयस्क अधिक पैरामीटर भेज सकता है नाम।

उदाहरण के लिए:

name=John, name=Joe, name=Mia 

दृष्टिकोण 1 केवल इस्तेमाल किया जा सकता है, तो आप उम्मीद कर ग्राहक एक नाम के लिए केवल एक पैरामीटर मान भेजता है, उनमें से बाकी नजरअंदाज कर दिया जाएगा। इस उदाहरण में आप केवल "जॉन"

दृष्टिकोण 2 का उपयोग किया जा सकता है यदि आप एक ही नाम के साथ एक से अधिक मानों की अपेक्षा करते हैं। जैसा कि आपने कोड में दिखाया है वैल्यू को सरणी के रूप में पॉप्युलेट किया जाएगा। इसलिए आप सभी मूल्यों, यानी "जॉन" को पढ़ने में सक्षम हो जाएगा, "जो", "मिया" इस उदाहरण

Documentation

+0

धन्यवाद में, आप, कुछ पोस्ट डेटा उदाहरण के साथ कृपया समझा सकता है दृष्टिकोण 1 के लिए उपयुक्त और 2? – andyPaul

+0

कुछ और जानकारी के साथ अद्यतन – kamoor

+0

जब मैं निम्नलिखित यूआरएल आज़माता हूं, तो मुझे 1 नक्शा सदस्य (कुंजी: आर) मिलता है, और इसकी एक सरणी दो तत्वों [123123,98734] के साथ होती है। https:? //localhost/app/faces/main.xhtml r = 123,123 और आर = 98,734 – Harun

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