原视频地址:https://www.bilibili.com/video/BV1vb41187jH?p=38
javax.servlet.http.HttpServletRequest
接口
HttpServletRequest
是一个接口,Servlet规范中重要接口之一继承关系:
public interface HttpServletRequest extends ServletRequest {}
HttpServletRequest
接口的实现类是WEB容器负责实现的,Tomcat服务器有自己的实现。但是程序员还是只需要面向HTTPServletRequest
接口调用方法即可,不用关心具体实现了。HTTPServletRequest
这个对象中封装了哪些信息呐?封装了HTTP请求协议的全部内容
- 请求方式
- URI
- 协议版本号
- 表单提交数据
- ……
HttpServletRequest
一般变量的名字叫做:request,表示请求。HttpServletRequest对象代表一次请求,一次请求对应一个request对象,100次请求对应100个request对象,所以request对象的生命周期是短暂的。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36<!--register.html-->
<html>
<head>
<title>register</title>
<meta charset="GBK">
</head>
<body>
<form action = "/webappname/user/save" method = "post">
用户名
<input type = "text" name = "username">
<br>
密码
<input type = "password" name = "password">
<br>
性别
男<input type = "radio" name = "sex" value = "m">
女<input type = "radio" name = "sex" value = "f">
<br>
爱好
<input type = "checkbox" name = "interest" value = "sport">运动
<input type = "checkbox" name = "interest" value = "music">音乐
<input type = "checkbox" name = "interest" value = "dance">跳舞
<input type = "checkbox" name = "interest" value = "study">学习 <input type = "checkbox" name = "interest" value = "read">阅读
<br>
学历
<select name = "grade">
<option value = "gz">高中</option>
<option value = "dz">大专</option>
<option value = "db">大本</option>
</select>
<br>
简介
<textarea rows = "10" cols = "60" name = "introduce"></textarea>
</form>
</body>
</html>1
2
3
4
5
6
7
8
9
10
11
12
13
14<!--web.xml-->
<welcome-file-list>
<welcome-file>register.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>save</servlet-name>
<!--Servlet全类名-->
<servlet-class>包名.SaveUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>save</servlet-name>
<!--请求路径-->
<url-pattern>/user/save</url-pattern>
</servlet-mapping>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49// SaveUserServlet.java
public class SaveUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取表单提交的用户信息,这些数据被自动封装到request对象中了
// 从request中获取这些信息
// 表单数据是这样的格式提交的,POST请求,在请求体中提交,数据格式
// username=admin&password=123&sex=m&interest=sport&interest=music&grade=dz&introduce=ok
/*
* Map<String, String[]>
* key value
*-----------------------------------------
* username {"admin"}
* password {"123"}
* sex {"m"}
* interest {"sport", "music"}
* grade {"dz"}
* introduce {"ok"}
*/
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String interest = request.getParameter("interest"); // 获取首元素
String grade = request.getParameter("grade");
String introduce = request.getParameter("introduce");
// 获取所有的兴趣爱好
// 这个方法适合取复选框checkbox中的数据
String[] interests = request.getParameterValues("interest");
for (String in : interests) {
System.out.println(in);
}
// 获取整个Map集合
Map<String, String[]> parameterMap = request.getParameterMap();
Set<String> names = parameterMap.keySet();
for (String name : names) {
String[] values = parameterMap.get(name);
System.out.println(name + "=" + values);
}
// 获取参数Map集合所有的key
Enumeration<String> keys = request.getParameterNames();
while (keys.hasMoreElements()) {
String name = keys.nextElement();
System.out.println(name);
}
}
}HttpServletRequest
接口中常用的方法:- 表单提交的数据,会自动被封装到request对象中,request对象中有Map集合存储这些数据,Map集合的key是name,value是一个字符串类型的一维数组
String getParameter(String name)
:通过key获取value这个一维数组中的首元素。通常情况下,这个一维数组中只有一个元素,所以这个方法使用最多。String[] getParameterValues(String name)
:通过Map集合key获取value这个一维数组**(也比较常用)**,这个方法适合取复选框checkbox中的数据Map getParameterMap()
: 获取整个Map集合Enumeration getParameterNames()
:获取整个Map集合的所有key
- 表单提交的数据,会自动被封装到request对象中,request对象中有Map集合存储这些数据,Map集合的key是name,value是一个字符串类型的一维数组