首先我们先了解一下客户端与服务端之间信息如何传递:

从上图,我们可以看到:
简单来说:
我们在介绍Request之前,应当先了解一下Request的继承体系:

我们可以看到HttpServletRequest是基于ServletRequest接口创建的针对Http协议的请求对象接口
我们在使用Request对象时,也常常使用HttpServletRequest接口
Request对象被创建的主要目的就是获得请求数据
我们将根据HTTP请求数据对象的三种格式分开介绍获得请求数据方法
请求行格式:
GET/request-demo/req1?username=zhangsan HTTP/1.1
请求行获得代码:
| 函数 | 解释 |
|---|---|
| String getMethod() | 获得请求方式(GET/POST) |
| String getContextPath() | 获得虚拟目录(项目访问路径):/request-demo |
| StringBuffer getRequestURL() | 获得URL(统一资源定位符): http://localhost:8080/request-demo/req1 |
| String getRequestURI() | 获得URI(统一资源标识符):/request-demo/req1 |
| String getQueryString | 获得请求参数(GET方法):username=zhangsan HTTP/1.1 |
请求头格式:
User-Agent: Mozilla/5.0 Chrome/91.0.4472.106
请求头获得代码:
| 函数 | 解释 |
|---|---|
| String getHeader(String name) | 根据请求头名称,获得值 |
请求体格式:
username=superbaby&password=123456
请求体获得代码:
| 函数 | 解释 |
|---|---|
| ServletInputStream getInputStream() | 获得字节输入流 |
| BufferedReader getReader() | 获得字符输入流 |
最后给出代码展示:
package com.itheima.web.request;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
/**
* request 获取请求数据
*/
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// String getMethod():获取请求方式: GET
String method = req.getMethod();
System.out.println(method);//GET
// String getContextPath():获取虚拟目录(项目访问路径):/request-demo
String contextPath = req.getContextPath();
System.out.println(contextPath);
// StringBuffer getRequestURL(): 获取URL(统一资源定位符):http://localhost:8080/request-demo/req1
StringBuffer url = req.getRequestURL();
System.out.println(url.toString());
// String getRequestURI():获取URI(统一资源标识符): /request-demo/req1
String uri = req.getRequestURI();
System.out.println(uri);
// String getQueryString():获取请求参数(GET方式): username=zhangsan
String queryString = req.getQueryString();
System.out.println(queryString);
//------------
// 获取请求头:user-agent: 浏览器的版本信息
String agent = req.getHeader("user-agent");
System.out.println(agent);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取post 请求体:请求参数
//1. 获取字符输入流
Buf