在form表单提交中,通过Enumeration e=request.getParameterNames();
获取客户端请求参数时,遇到的问题处理方式:
1.正常情况下:当所有的参数均不是数组类型时,可以简单地获取到!
test1.htm
<form action="test1.jsp" method="post">
name:<input type="text" name="uname"/></br>
password:<input type="password" name="upass"/></br>
<input type="submit" value="submit"/>
</form>
test1.jsp
<%@page contentType="text/html;charset=gbk" %>
<%
request.setCharacterEncoding("gbk");
Enumeration e=request.getParameterNames();
while(e.hasMoreElements())
{
String name=(String)e.nextElement();
%>
<%=name%>-->
<%=request.getParameter(name)%>
<%
}
%>
2.当参数中存在数组时,如下拉列表或复选框时。需另外处理!
test2.htm
<form action="test2.jsp" method="post">
name:<input type="text" name="uname"/></br>
size:
<input type="checkbox" name="**check" value="1">1
<input type="checkbox" name="**check" value="2">2
<input type="checkbox" name="**check" value="3">3
</br>
password:<input type="password" name="upass"/></br>
<input type="submit" value="submit"/>
</form>
test2.jsp
<%@page contentType="text/html;charset=gbk" %>
<%
request.setCharacterEncoding("gbk");
Enumeration e=request.getParameterNames();
while(e.hasMoreElements())
{
String name=(String)e.nextElement();
/*当参数为数组类型时。。*/
if(name.startsWith("**"))
{
%>
<%=name%>-->
<%
String val[]=request.getParameterValues(name);
for(int i=0;i<val.length;i++)
{
%>
<%=val[i]%>,
<%
}//end for
}//end if
/*当参数为正常的非数组类型时。。*/
else
{
%>
<%=name%>--><%=request.getParameter(name)%>
<%
}//end else
}//end while
%>
3.注:测试过程中,发现存在一个问题一直不理解!
以test2.htm为例,当用户不进行任何操作直接提交时,会发现只能获取到所有非数组类型的参数!
具体原因不详,问题仍未解决 !!!