接收表單參數的幾種方法


1.第一種

 

        Map<String, String[]> paramMaps = request.getParameterMap();//接受參數

      String  表單名=((String[]) paramMaps.get("表單名"))[0];

 

獲取表單數據時總是用request.getParameter(“name”),根據表單中的name值獲取value值,需要獲取幾項就得重復寫幾次getParameter,而request.getParameterMap方法則不同,不需要參數,返回結果為Map<String,String[]> 。其實,request.getParameterMap()方法也是通過前台表單中的name值進行獲取的,獲取到后又進行了一次封裝。 之所以返回的map中的value為字符串類型的數組,是為了解決表單中有多個name值一樣的項。

 

 

 

一、

 

      根據Java規范:request.getParameterMap()返回的是一個Map類型的值,該返回值記錄着前端(如jsp頁面)所提交請求中的請求參數和請求參數值的映射關系。這個返回值有個特別之處——只能讀。不像普通的Map類型數據一樣可以修改。這是因為服務器為了實現一定的安全規范,所作的限制。比如WebLogic,Tomcat,Resin,JBoss等服務器均實現了此規范。

 

   如果實在有必要在取得此值以后做修改的話,要新建一個map對象,將返回值復制到此新map對象中進行修改,用新的map對象代替使用之前的返回值。

 

 

  1. <span style="font-size:14px;">01.Map readOnlyMap = request.getParameterMap();    
  2. 02.Map writeAbleMap = new HashMap();    
  3. 03.writeAbleMap.putAll(readOnlyMap);    
  4. 04.writeAbleMap.remove()或者put()...    
  5. 05.在后續的程序代碼中使用writeAbleMap即可    
  6. </span> 

 

二、

    對request.getParameterMap()的返回值使用泛型時應該是Map<String,String[]>形式,因為有時像checkbox這樣的組件會有一個name對應對個value的時候,所以該Map中鍵值對是<String-->String[]>的實現。

    舉例,在服務器端得到jsp頁面提交的參數很容易,但通過request.getParameterMap()可以將request中的參數和值變成一個Map。

    以下是將得到的參數和值打印出來,形成的map結構:Map(key,value[]),即:key是String型,value是String型數組。

例如:request中的參數t1=1&t1=2&t2=3形成的map結構:

key=t1;value[0]=1,value[1]=2


key=t2;value[0]=3

如果直接用map.get("t1"),得到的將是:Ljava.lang.String;   value之所以是數組形式,就是防止參數名有相同的情況。

 

 

遍歷request.getParameterMap()里面的值:

[java] view plain copy
  1. //獲取request對象  
  2.  HttpServletRequest request = ServletActionContext.getRequest();  
  3.       
  4.  Map<String,String[]> map=request.getParameterMap();  
  5.  //遍歷  
  6.   for(Iterator iter=map.entrySet().iterator();iter.hasNext();){  
  7.         Map.Entry element=(Map.Entry)iter.next();  
  8.         //key值  
  9.         Object strKey = element.getKey();  
  10.         //value,數組形式  
  11.       String[] value=(String[])element.getValue();  
  12.   
  13.      System.out.print(strKey.toString() +"=");  
  14.      for(int i=0;i<value.length;i++){  
  15.          System.out.print(value[i]+",");
  16.      }   
  17.     System.out.println();  
  18.      } 

 

 

三、當傳遞的參數個數不固定且參數名沒有重復的,取值的方法:

//得到枚舉類型的參數名稱,參數名稱若有重復的只能得到第一個

  1. Map map = new HashMap();

  2. Enumeration enum =this.getRequest().getParameterNames();  
  3.  while (enum.hasMoreElements()) {  
  4.   String paramName = (String) enum.nextElement();  
  5.    
  6.   String paramValue = this.getRequest().getParameter(paramName);  
  7.    //形成鍵值對應的map  
  8.   map.put(paramName, paramValue);  
  9.   } 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM