Web基础—HTTP协议

一、请求数据

1、HTTP协议中请求数据类型

请求行(请求数据第一行)

请求头(键值对格式出现:key-value)

请求体(post请求时)

请求方式分为get请求,post请求:1、GET没有请求体,在浏览器中请求大小有限制2、POST请求大小无限制

2、请求数据的获取

基于HttpServletResponse response封装。

Tomcat服务器对原始协议数据进行解析,将http请求数据解析封装成HttpServletRequest对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.example.springbootquickstart;

import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RequestContoller {
@RequestMapping("/request")
public String Request(HttpServletRequest request){

// 1、获取请求方式
String method = request.getMethod();
System.out.println(method);
//2、获取请求url/uri地址
String url = request.getRequestURL().toString();
System.out.println(url);
String uri = request.getRequestURI();
System.out.println(uri);
//3、获取请求协议
String protocol = request.getProtocol();
System.out.println(protocol);
//4、获取请求参数
String queryString = request.getQueryString();
System.out.println(queryString);
//5、获取请求头
String header = request.getHeader("User-Agent");
System.out.println(header);


}
}

综上,我们可以通过(HttpServletRequest类型)request对象获取请求信息。

二、响应数据

1、HTTP协议中响应数据类型

响应行(请求数据第一行)

响应头(键值对格式出现:key-value)

响应体(服务端响应给前端的具体数据部分)

2、响应行的状态码分类

1**:响应中,临时状态码

2**:响应成功

3**:重定向

4**:客户端错误

5**:服务端错误

访问浏览器时通过F12键->进入开发者工具->选择网络即可查看到响应码↓↓↓↓↓↓↓

image-20241111160032671

3、响应数据的设置

方式一:基于HttpServletResponse 封装

1
2
3
4
5
6
7
8
9
10
11
12
@RestController
public class ResponseController {
@RequestMapping("/response1")
public void Response(HttpServletResponse response)
{
//1、设置响应状态码
response.setStatus(HttpServletResponse.SC_OK);
//2、设置响应头
response.addHeader("name","zhangsan");
//3、设置响应体
response.setContentType("<h1>HelloWorld!</h1>");
}

方式二:

基于Spring中提供的ResponseEntity类

1
2
3
4
5
@RequestMapping("/response2")
public ResponseEntity<String> Response2()
{
return ResponseEntity.status(401).header("name","张三").body("<h1>HelloWorld!</h1>");
}

4、注意

响应码与响应头无特殊要求通常不设定。服务器会自动设置响应码与响应头