Java Web Request
Request 对象的作用是与客户端交互,接收客户端发送的信息。
一、Request 是什么?
1. 工作流程
2. Request 对象
当客户端向服务器端发送请求时,服务器为本次请求创建 Request 对象,并传递给 Servlet。
Request 对象中封装着请求信息。
二、常用方法
1. 获取请求行信息
方法 | 描述 |
---|---|
String getMethod() | 获取 HTTP 请求方式 |
String getContextPath() | 获取项目路径 |
String getServletPath() | 获取 Servlet 路径 |
String getRequestURI() | 获取 URI 路径 |
String getRequestURL() | 获取 URL 路径 |
String getQueryString() | 获取 GET 方法的请求参数 |
String getProtocol() | 获取协议名称及版本 |
String getRemoteAddr() | 获取客户端的 IP 地址 |
假设请求行:
1
GET /Project/demo1?name=zhangsan HTTP/1.1
则应用各个方法的结果为:
1
2
3
4
5
6
7
8
getMethod() -- GET
getContextPath() -- /Project
getServletPath() -- /demo1
getRequestURI() -- /Project/demo1
getRequestURL() -- http://localhost/Project/demo1
getQueryString() -- name=zhangsan
getProtocol() -- HTTP/1.1
getRemoteAddr() -- 客户端的IP地址
2. 获取请求头信息
方法 | 描述 |
---|---|
String getHeader(String name) | 获取请求头名称对应的参数值 |
Enumeration getHeaderNames() | 获取包含所有请求头名称的枚举 |
3. 获取请求体信息
只有 POST 方法,才有请求体,并且以流的方式封装
获取步骤:
- 获取流对象
BufferedReader getReader()
:获取字符输入流ServletInputStream getInputStream()
:获取字节输入流
- 从流中拿取数据
4. 编码方式
方法 | 说明 |
---|---|
String getCharacterEncoding() | 获取请求主体的编码方式 |
void setCharacterEncoding(String type) | 设置请求主体的编码方式 |
5. 获取参数的通用方法
Java 对上述方法进行了封装,提供了适用于多种请求方式的参数获取方法
方法 | 说明 |
---|---|
String getParameter(String name) | 获取参数名称对应的参数值 |
String[] getParameterValues(String name) | 获取参数名称对应的参数值数组 |
Enumeration getParameterNames() | 获取包含所有参数名称的枚举 |
Map getParameterMap() | 获取包含所有参数的 Map 集合 |
6. BeanUtils
BeanUtils 可以用于简化获取请求参数的操作,它可以将包含请求参数的 map 集合中的数据存储进对象之中。
1 |
|
1
2
3
4
5
6
7
8
// 1. 获取所有请求参数
Map<String, String[]> map = request.getParameterMap();
// 2. 创建实例对象,以User对象为例
User user = new User()
// 3. 使用BeanUtils封装
BeanUtils.populate(user, map);