使用getParameterMap()方法實現對請求參數的封裝的工具類


  我們知道,HttpServletRequest這個類的getParameter(name),getParameterValues(name)可以分別實現對頁面傳來的單個參數和對多個同名參數的接受。特別是getParameter(name)這個方法被用的次數特別多。有時候頁面傳來多個參數的情況下,要寫多個request.getParameter(name)進行逐個接受,當然在springmvc框架下你可以在選擇使用對象接受參數,也可以在方法上對參數進行逐個接收。但這樣做的弊端在於在請求參數個數和名稱變化的情況下,你需要創建不同的接受參數的對象進行接收,或者在你的方法上分別對參數進行接受(參數多的情況下,代碼就顯得很丑陋)。本文的目的在於使用 HttpServletRequest的getParameterMap()這個方法實現對請求參數的封裝,下面直接上代碼。

 

 1 import java.util.HashMap;
 2 import java.util.Iterator;
 3 import java.util.Map;
 4 import java.util.Map.Entry;
 5 
 6 import javax.servlet.http.HttpServletRequest;
 7 
 8 public class RequestParamsToMap {
 9   //返回值類型為Map<String, Object>
10     public static Map<String, Object> getParameterMap(HttpServletRequest request) {
11         Map<String, String[]> properties = request.getParameterMap();//把請求參數封裝到Map<String, String[]>中
12         Map<String, Object> returnMap = new HashMap<String, Object>();
13         Iterator<Entry<String, String[]>> iter = properties.entrySet().iterator();
14         String name = "";
15         String value = "";
16         while (iter.hasNext()) {
17             Entry<String, String[]> entry = iter.next();
18             name = entry.getKey();
19             Object valueObj = entry.getValue();
20             if (null == valueObj) {
21                 value = "";
22             } else if (valueObj instanceof String[]) {
23                 String[] values = (String[]) valueObj;
24                 for (int i = 0; i < values.length; i++) { //用於請求參數中有多個相同名稱
25                     value = values[i] + ",";
26                 }
27                 value = value.substring(0, value.length() - 1);
28             } else {
29                 value = valueObj.toString();//用於請求參數中請求參數名唯一
30             }
31             returnMap.put(name, value);
32         }
33         return returnMap;
34     }
35     //返回值類型為Map<String, String>
36     public static Map<String, String> getParameterStringMap(HttpServletRequest request) {
37         Map<String, String[]> properties = request.getParameterMap();//把請求參數封裝到Map<String, String[]>中
38         Map<String, String> returnMap = new HashMap<String, String>();
39         String name = "";
40         String value = "";
41         for (Map.Entry<String, String[]> entry : properties.entrySet()) {
42             name = entry.getKey();
43             String[] values = entry.getValue();
44             if (null == values) {
45                 value = "";
46             } else if (values.length>1) {
47                 for (int i = 0; i < values.length; i++) { //用於請求參數中有多個相同名稱
48                     value = values[i] + ",";
49                 }
50                 value = value.substring(0, value.length() - 1);
51             } else {
52                 value = values[0];//用於請求參數中請求參數名唯一
53             }
54             returnMap.put(name, value);
55             
56         }
57         return returnMap;
58     }
59     
60 }

 

代碼就這么多,當然你要是想把得到的map集合轉換成bean對象,可以使用 import org.apache.commons.beanutils.BeanUtils;類的BeanUtils.populate(bean, map)方法實現對map向bean的轉換,這個方法會根據map的key值和bean對象的屬性進行自動匹配(此時,推薦使用第一個方法)。


免責聲明!

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



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