1.Request 继承体系
![](https://img-blog.csdnimg.cn/66be6ad1521a409d97192c6940c1860c.png)
2.Request 获取请求数据
2.1.请求行
- String getMethod():获取请求方式: GET
- String getContextPath():获取虚拟目录(项目访问路径): /request-demo StringBuffer
- getRequestURL(): 获取URL(统一资源定位符):http://localhost:8080/request-demo/req1
- String getRequestURI():获取URI(统一资源标识符): /request-demo/req1
- String getQueryString():获取请求参数(GET方式): username=zhangsan&password=123
2.2.请求头和请求体(post)
![](https://img-blog.csdnimg.cn/4e9c7316ce1b4a8f9d5a45bc12893a36.png)
2.3.运行分析
![](https://img-blog.csdnimg.cn/c3cbfd473d234330bde4e8061729212d.png)
代码
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. 获取字符输入流
BufferedReader br = req.getReader();
//2. 读取数据
String line = br.readLine();
System.out.println(line);
}
}
3.Request 通用方式获取请求参数
3.1提供一种统一获取请求参数的方式,从而统一doGet 和 doPost方法内的代码
![](https://img-blog.csdnimg.cn/e387d5a7116a4025af5079da26c2e7fb.png)
- Map<String, String[ ]> getParameterMap():获取所有参数Map集合 String[ ]
- getParameterValues(String name) :根据名称获取参数值(数组)
- String getParameter(String name):根据名称获取参数值(单个值)
3.2 通用的代码解析演示
1.写在get中的
![](https://img-blog.csdnimg.cn/ce3298c0c7814a2eb8045824cbf4fd3f.png)
2.写在post中的
![](https://img-blog.csdnimg.cn/054f8545a2c44f549f48150b5c1767d6.png)
3.代码
package com.itheima.web.request;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.Map;
/**
* request 通用方式获取请求参数
*/
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//GET请求逻辑
//System.out.println("get....");
//1. 获取所有参数的Map集合
Map<String, String[]> map = req.getParameterMap();
for (String key : map.keySet()) {
System.out.print(key+":"); // username:zhangsan lisi
String[] values = map.get(key); //获取值
for (String value : values) {
System.out.print(value + " ");
}
System.out.println();
}
System.out.println("------------");
//2. 根据key获取参数值,数组
String[] hobbies = req.getParameterValues("hobby");
for (String hobby : hobbies) {
System.out.println(hobby);
}
//3. 根据key 获取单个参数值
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username);
System.out.println(password);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//POST请求逻辑
this.doGet(req,resp);
/*System.out.println("post....");
//1. 获取所有参数的Map集合
Map<String, String[]> map = req.getParameterMap();
for (String key : map.keySet()) {
// username:zhangsan lisi
System.out.print(key+":");
//获取值
String[] values = map.get(key);
for (String value : values) {
System.out.print(value + " ");
}
System.out.println();
}
System.out.println("------------");
//2. 根据key获取参数值,数组
String[] hobbies = req.getParameterValues("hobby");
for (String hobby : hobbies) {
System.out.println(hobby);
}
//3. 根据key 获取单个参数值
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username);
System.out.println(password);*/
}
}
3.3 运行代码图解
1.req代码
1.1 get配置
![](https://img-blog.csdnimg.cn/3f04167bfdfb435c8268f7cbdcd87eb6.png)
1.2 post配置
![](https://img-blog.csdnimg.cn/db6f75777a7f4d938d345df128f063d0.png)
2.get运行演示
![](https://img-blog.csdnimg.cn/d052e6e189a54ab99d4076379c5d4214.png)
![](https://img-blog.csdnimg.cn/8055569210c14f1d948058f779ab0809.png)
![](https://img-blog.csdnimg.cn/b7dd62cfd69b4128a6388f16e8cd61ff.png)
3.post运行演示
![](https://img-blog.csdnimg.cn/b81abad298e142b69f2a6faa70641fee.png)
![](https://img-blog.csdnimg.cn/c155fced3b1f477695fd1deb3e4ecd51.png)
3.4.利用模板的方式,快速创建
1.编辑模板
![](https://img-blog.csdnimg.cn/309183d9be844d159e535bf8a815da5a.png)
![](https://img-blog.csdnimg.cn/2932c91039ec4a9195b68d80376e96cd.png)
2.使用模板
![](https://img-blog.csdnimg.cn/abe1125c4a2948fb8442210da39f6ab0.png)
最后将 /RequesDemo7 修改成指定的路径就可以了