一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第25天,点击查看活动详情。
写在前面👀
今天主要讲讲获取请求参数的通用方式
一、Request获取请求参数
上回书说到,GET请求参数在请求行中,可以用
getQueryString( )获取参数;而POST请求参数一般在请求体中,可以用getReader( )获取纯文本的参数。那么有没有一种获取请求参数的通用方式呢?答案是当然有的。
1️⃣获取参数的方法
| 返回值类型 | 方法声明 | 功能描述 |
|---|---|---|
| String | getParameter(String name) | 返回指定参数名的参数值。 |
| String [ ] | getParameterValues (String name) | 以字符串数组的形式返回指定参数名的所有参数值(HTTP 请求中可以有多个相同参数名的参数)。 |
| Enumeration< String > | getParameterNames() | 以枚举集合的形式返回请求中所有参数名。 |
| Map<String, String[]> | getParameterMap() | 用于将请求中的所有参数名和参数值装入一个 Map 对象中返回。 |
2️⃣代码示例
a.编写html文件
webapp目录下添加一个html文件,名称为:register.html。添加一个表单类型标签,设置请求方式为POST,请求路径为/tomcat/req4。后面可以把请求方式改为GET,验证getParameter系列方法获取参数是否通用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/tomcat/req4" method="post">
账号:<input type="text" name="username">
<br>
密码:<input type="password" name="password">
<br>
<input type="checkbox" name="language" value="1"> java
<input type="checkbox" name="language" value="2"> go
<input type="checkbox" name="language" value="3"> python <br>
<input type="submit" value="注册">
</form>
</body>
</html>
b.创建Servlet
- 名字叫做
RequestDemo3,Servlet映射路径:/req4
/**
* request 通用方式获取请求参数
*/
@WebServlet("/req4")
public class RequestDemo4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.获取请求方式
System.out.println("请求方式为:" + request.getMethod());
// 2.获取所有参数的Map集合
Map<String, String[]> map = request.getParameterMap();
for (String key : map.keySet()) {
// 获取key
System.out.print(key + ":");
// 获取value
String[] values = map.get(key);
for (String value : values) {
System.out.print(value + " ");
}
System.out.println();
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
c.启动tomcat
d.填写表单信息
- 在浏览器地址栏输入
localhost:8080/tomcat/register.html
e.结果演示
- 表单请求方式为
POST
- 表单请求方式为
GET
3️⃣获取参数的大致流程
1.根据请求方式获取请求参数
- 先用
service( )方法判断是哪种请求方式,然后根据请求方式的不同用不同的方法获取请求参数。如GET请求用getQueryString( )获取参数;而POST请求用getReader( )获取纯文本的参数。 - 获取到的参数是一长串带有
&和=符号的字符串,例如👇
2.把获取到的内容进行分割
- 根据
&和=符号分割字符串,获取有用的参数
3.将数据存入到Map集合中
- 注意:因为参数的值可能是一个,也可能有多个,所以Map的值的类型为String数组。
写在后面🍻
感谢观看啦✨
有什么不足,欢迎指出哦💖
掘金的运营同学审核辛苦了💗