使用 Servlet 读取表单数据
在Web应用中,对于客户端数据的收集通常会使用表单来进行。当用户端请求到达服务器时,Servlet主要通过HttpServletRequest对象的三种方法来获取用户请求的参数:
(1)Public String getParameter(String name):用来获取表单单个请求参数的值。
(2)Public Enumeration getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。
(3)Public String[] getParameterValues(String name):如果参数name的值不止一个,则调用该方法,并返回多个值。
示例如下:
(1)源代码
submitForm.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Submit From</title>
</head>
<body>
<form action="showParameter" method="get" id="submitFrom">
<label for="method">提交方式</label>
<select id="method">
<option value="get" name="submitmethod" selected="selected">get</option>
<option value="post" name="submitmethod">post</option>
</select>
<br/>
<script type="text/javascript">
document.getElementById("method").onchange = function(){
var index = this.selectedIndex;
var selMethod = this.options[index].value;
document.getElementById("submitFrom").method = selMethod;
}
</script>
<label for="man">男</label>
<input type="checkbox" value="man" id="sex" name="sex">
<label for="woman">女</label>
<input type="checkbox" value="woman" id="woman" name="sex"><br>
<label for="name">姓名</label>
<input type="text" id="name" name="name"><br>
<label for="age">年龄</label>
<input type="text" id="age" name="age"><br>
<input type="submit" name="submit">
</form>
</body>
</html>
showParameter.java
package cn.border.parameter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class showParameter
*/
@WebServlet("/showParameter")
public class showParameter extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public showParameter() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//解决中文参数乱码
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String parameterName = (String) parameterNames.nextElement();
out.println(parameterName+" : ");
String[] parameterValues = request.getParameterValues(parameterName);
if (parameterValues.length == 1) { //只有一个值
String parameterValue = parameterValues[0];
if(parameterValue.length() == 0){
out.println("值为空");
}else {
out.print(parameterValue);
}
} else { //
for (String parametervalue : parameterValues) {
out.println(parametervalue+" | ");
}
}
out.println("<br>");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
(2)运行结果