接收表單參數的幾種方法

1.第一種前端

 

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

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

 

獲取表單數據時老是用request.getParameter(「name」),根據表單中的name值獲取value值,須要獲取幾項就得重複寫幾回getParameter,而request.getParameterMap方法則不一樣,不須要參數,返回結果爲Map<String,String[]> 。其實,request.getParameterMap()方法也是經過前臺表單中的name值進行獲取的,獲取到後又進行了一次封裝。 之因此返回的map中的value爲字符串類型的數組,是爲了解決表單中有多個name值同樣的項。安全

 

 

 

1、服務器

 

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

 

   若是實在有必要在取得此值之後作修改的話,要新建一個map對象,將返回值複製到此新map對象中進行修改,用新的map對象代替使用以前的返回值。ide

 

 

  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> 

 

2、this

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

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

    如下是將獲得的參數和值打印出來,造成的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.      } 

 

 

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

//獲得枚舉類型的參數名稱,參數名稱如有重複的只能獲得第一個

  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.   } 
相關文章
相關標籤/搜索