再一些需求中,我们再未知前端参数名时JAVA后端要获取参数值。那就必须先拿到参数名。什么情况下用到呢?比如再做一些数据传输安全处理时,前端将参数名与参数值都进行了加密,后端常规中用的直接请求参数名取值的方法就失效了,因为不知道加密后的参数名的密文是什么。
这里记录两种方法request拿到当前接口请求的所有参数名。当然也可以用其他的遍历方式。
1、使用request.getParameterNames()方法
Enumeration enum=request.getParameterNames();
while(enum.hasMoreElements()){
String paraName=(String)enum.nextElement();
System.out.println("参数名:参数值 "+paraName+":"+request.getParameter(paraName));
}
2、 使用request.getParameterMap()方法
Map map=request.getParameterMap();
Set keSet=map.entrySet();
for(Iterator itr=keSet.iterator();itr.hasNext();){
Map.Entry me=(Map.Entry)itr.next();
Object ok=me.getKey();
Object ov=me.getValue();
String[] value=new String[1];
if(ov instanceof String[]){
value=(String[])ov;
}else{
value[0]=ov.toString();
}
for(int k=0;k<value.length;k++){
System.out.println("参数名=参数值 "+ok+"="+value[k]);
}
}
Enumeration接口说明:
1.Enumeration接口定义了从一个数据结构得到连续数据的方法。比如Enumeration定义了一个名为nextElement的方法,可以用来从含有多个元素的数据结构中得到的下一个元素。
2.Enumeration接口提供了一套标准的方法,由于Enumeration是一个接口,它的角色局限于为数据结构提供方法协议。
3.实现该接口的对象由一系列的元素组成,可以连续地调用nextElement()方法来得到 Enumeration枚举对象中的元素。
Enumertion接口中仅定义了下面两个方法:
(1).boolean hasMoreElemerts()
测试Enumeration枚举对象中是否还含有元素,如果返回true,则表示还含有至少一个的元素。
(2).Object nextElement()
如果Bnumeration枚举对象还含有元素,该方法得到对象中的下一个元素。