1.Request 继承体系
2.Request 获取请求数据
2.1.请求行 ![](https://i-blog.csdnimg.cn/blog_migrate/08a9ed50ed6c206598822e5464feb760.png)
- 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)
2.3.运行分析
代码
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方法内的代码
- Map<String, String[ ]> getParameterMap():获取所有参数Map集合 String[ ]
- getParameterValues(String name) :根据名称获取参数值(数组)
- String getParameter(String name):根据名称获取参数值(单个值)
3.2 通用的代码解析演示
1.写在get中的
2.写在post中的
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配置
1.2 post配置
2.get运行演示
3.post运行演示
3.4.利用模板的方式,快速创建
1.编辑模板
2.使用模板
最后将 /RequesDemo7 修改成指定的路径就可以了