首页 > 代码库 > 读代码学java:request.getParameterNames

读代码学java:request.getParameterNames

 1 protected Map<String, String> initRequestParams(HttpServletRequest request) {
 2         Map<String, String> paramMap = new HashMap<String, String>();
 3         if (request == null) {
 4             return paramMap;
 5         }
 6         Enumeration<?> paramNames = request.getParameterNames();
 7 /*
 8 Enumeration<?>代表可以传递任意类型,?是通配符即Object及其下的子类,也就是java的所有对象了。
 9 
10 request.getParameterNames()方法是将发送请求页面中form表单里所有具有name属性的表单对象获取(包括button).返回一个Enumeration类型的枚举.
11 
12 通过Enumeration的hasMoreElements()方法遍历.再由nextElement()方法获得枚举的值.此时的值是form表单中所有控件的name属性的值.
13 
14 最后通过request.getParameter()方法获取表单控件的value值.
15 */
16         if (request != null && paramNames != null && paramNames.hasMoreElements()) {
17             while (paramNames.hasMoreElements()) {
18                 String paramName = (String) paramNames.nextElement();
19                 String[] paramValues = request.getParameterValues(paramName);
20 /*
21 先获得变量mane再获得其值,对于getParameterName()其值是变量/对象的名称,getParameterValue()获得的是变量/对象的值。
22 request.getParameterValues("name")方法将获取所有form表单中name属性为"name"的值.该方法返回一个数组.遍历数组就可得到value值.
23 */
24                 if (paramValues.length == 1) {
25                     paramMap.put(paramName, paramValues[0]);
26                 } else {
27                     paramMap.put(paramName, ArrayUtils.toString(paramValues));
28                 }
29             }
30         }
31         return paramMap;
32 }
33 /*
34 request.getParameterNames()的值是无序排列request.getParameterValues()是按照from表单的控件顺序排列.
35 */

 

读代码学java:request.getParameterNames