1 普通方式遍历提交表单
通过jsp来实现
编写一个html静态页面,把表单提交到 4_2.jsp页面上
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>欢迎注册</h1>
<form method="post" action="4_2.jsp">
请输入用户名:<input type="text" name="username"><br>
请输入密码:<input type="password" name="userpwd"><br>
请选择爱好:<input type="checkbox" name=hobby value="篮球">篮球
<input type="checkbox" name=hobby value="足球">足球
<input type="checkbox" name=hobby value="乒乓球">乒乓球
<input type="checkbox" name=hobby value="羽毛球">羽毛球
<input type="checkbox" name=hobby value="橄榄球">橄榄球
<input type="submit" value="提交">
<input type="reset" value="重选">
</form>
</body>
</html>
4_2.jsp页面
后台接收
<%@ 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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置编码格式
request.setCharacterEncoding("utf-8");
//接收表单提交的参数
String name = request.getParameter("username");
String password = request.getParameter("userpwd");
String[] hobby = request.getParameterValues("hobby");
//遍历输出
out.print("username:"+name);
out.print("password:"+password+"<br>");
out.print("兴趣爱好:"+"<br>");
for(String i : hobby){
out.print(i);
out.print("<br>");
}
%>
</body>
</html>
运行结果
2 枚举类遍历表单的请求参数
同样的注册页面
只不过把页面提交到4_3.jsp页面上
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>欢迎注册</h1>
<form method="post" action="4_3.jsp">
请输入用户名:<input type="text" name="username"><br>
请输入密码:<input type="password" name="userpwd"><br>
请选择爱好:<input type="checkbox" name=hobby value="篮球">篮球
<input type="checkbox" name=hobby value="足球">足球
<input type="checkbox" name=hobby value="乒乓球">乒乓球
<input type="checkbox" name=hobby value="羽毛球">羽毛球
<input type="checkbox" name=hobby value="橄榄球">橄榄球
<input type="submit" value="提交">
<input type="reset" value="重选">
</form>
</body>
</html>
4_3.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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//设置字符编码
request.setCharacterEncoding("utf-8");
//使用枚举来遍历
String pm = "";
Enumeration pms = request.getParameterNames();
while(pms.hasMoreElements()){
pm = (String)pms.nextElement(); // 代表表单项
out.print(pm);
String num = request.getParameter(pm);
out.print(num);
if(pm.equals("hobby")){
String[] hobby = request.getParameterValues("hobby");
for(String i : hobby){
out.print(i+"<br>");
}
}
}
%>
</body>
</html>
提交结果
3 两则之间的优缺点
如果要提交的表单项中有很多很多,那么通过普通方式来实现输出的话就需要写很多很多的request.getParameter(), request.getParameterValues() 方法来实现接收参数,而通过枚举的方式就可以避免这种复杂