Request&Response
文章目录
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d3f2e4f7bf0744ba5f8daa13b6461450.png)
Request(请求)
Request继承体系
注:
1.Tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法中。
2.使用request对象,查阅javaEE API文档的 HttpServletRequest接口
Request获取请求数据(核心功能)
获取请求数据
1.请求行:
GET /request-demo/req1?username=zhangsan HTTP/2
- String getMethod():获取请求方式:GET
- Strintg getContextPath():获取虚拟目录(项目访问路径):/request-demo
- StringBuffer get RequestURL():获取URL(统一资源定位符):http://local:8080/request-demo/req1
- String get RequestURI():获取URL(统一资源标识符):/request-demo/req1
- String getQueryString():获取请求参数(GET方式):username=zhangsan&password=123
2.请求头
User-Agent:Mozilla/5.0 Chrome/91.0.4472.106
- String getHeader(String name):根据请求头名称获取值
3.请求体
POST请求才有请求体
- ServletinputStream getinputStream();获取字节输入流
- BufferedReader getReader():获取字符输入流
通用方式获取请求参数
-
GET:
String getQueryString()
-
POST
BufferedReader getReader()
思考:
get请求方式与post请求方式区别在于获取请求参数的方式不一样,是否可以提供一种统一获取请求参数的方式,从而统一doGet与doPost方法内的代码?
Request通用方式获取请求参数
- Map<String,String[]> getParameterMap():获取所有参数map集合
- String[] getParameterValues(String name):根据名称获取参数值(数组)
- String getParameter(String name):根据名称获取参数值(单个)
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.IOException;
import java.util.Map;
@WebServlet("/req2")
public class RequestDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get.....");
//1.获取所有的Map集合
Map<String, String[]> map = req.getParameterMap();
for (String key : map.keySet()) {
//username;zhangsan
System.out.print(key+":");
String[] values = map.get(key);
for (<