在前端的一个表单中,当用户点击提交一些用户名密码数据后,后台是如何获取请求参数的呢?
这里先设计一个表单。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://localhost:8080/servlet-01/parameterServlet">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
兴趣爱好:<input type="checkbox" name="hobby" value="cpp">C++
<input type="checkbox" name="hobby" value="java">Java
<input type="checkbox" name="hobby" value="js">JavaScript<br>
<input type="submit">
</form>
</body>
</html>
然后就是创建一个Servlet了
package com.servlet.one;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
public class ParameterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String hobby = request.getParameter("hobby");
String[] hobby2 = request.getParameterValues("hobby");
System.out.println("用户名:"+username);
System.out.println("密码:"+password);
System.out.println("兴趣爱好:"+hobby);
//在HttpServletRequest中有一个getParameterValues()方法,这是获取多个值的时候用到的
System.out.println("兴趣爱好:"+ Arrays.asList(hobby2));
}
}
这里只用到了一个API,那就是HttpServletRequest里的getParameter,里面的字符串只要跟前端页面的name对应就可以获取到请求参数。
但是对于兴趣爱好这里,当用户勾选多个时,我们需要用到getParameterValues这个方法,输出时将数组转换为集合。