扎心了,我顺手就写了一个request.getAttributeNames(),还想了半天怎么会没有数据也不报错呢,一开始我还想难道是我的表单数据太多不能用get,就换成了post,依旧无果,原来是把request.getParameterNames()写错了。
贴上表单发送及一次性接收的有效代码:
demo.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>多参数发送</title>
</head>
<body>
<form action="demo.jsp" method="post">
姓名:<input type="text" name="name">
性别:<input type="radio" name="sex" value="女" checked>女
<input type="radio" name="sex" value="男">男<br>
城市:<select name="city">
<option value="南昌">南昌</option>
<option value="杭州">杭州</option>
<option value="深圳">深圳</option>
<option value="北京">北京</option>
</select>
兴趣:<input type="checkbox" name="**inst" value="唱歌">唱歌
<input type="checkbox" name="**inst" value="跳舞">跳舞
<input type="checkbox" name="**inst" value="游泳">游泳
<input type="checkbox" name="**inst" value="旅游">旅游<br>
自我介绍:<textarea rows="3" cols="30" name="introducearea">自我介绍</textarea>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
</body>
</html>
demo.jsp
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>接收多参数</title>
</head>
<body>
<%request.setCharacterEncoding("utf-8"); %>
<center>
<table border="1">
<tr>
<td>参数名称</td>
<td>参数内容</td>
</tr>
<%
Enumeration<String> enum_=request.getParameterNames();
while(enum_.hasMoreElements()){
String paramName=(String) enum_.nextElement();//取出内容
%>
<tr>
<td><%=paramName %></td>
<td>
<%
if(paramName.startsWith("**")){
String paramValue[]=request.getParameterValues(paramName);
for(int x=0;x<paramValue.length;x++){
%>
<%=paramValue[x] %>、
<%
}
}else{
String paramValue=request.getParameter(paramName);
%>
<%=paramValue %>
<%
}
%>
</td>
</tr>
<%}%>
</table>
</center>
</body>
</html>
那么getAttribute和getParameter有什么区别?
简单来说,getAttribute是在web容器内流转的,使用前必须有一个setAttribute,可以使用它传递对象;而getParameter是在web客户端和web服务端之间流转的,通过get/post方式即可,可以使用它得到页面传来的参数。