Web基础之什么是HTTP协议
Q:什么是HTTP协议?
概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
特点:
1.基于TCP协议:面向连接,安全
2.基于请求-响应模型的:一次请求对应一次响应
3。HTTP协议是无状态(无状态的是:每一次请求都是独立的,后一次请求不会记录前一次的数据)的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
缺点:多次请求间不能共享数据。(解决方案:会话技术)
优点:速度快(不能共享数据所以传输速度快)
HTTP协议-请求数据格式
如何查看数据格式?在chrome浏览器中按下F12,选择网络-全部,刷新一下之后就可以在名称栏下找到想找到的http请求。点击标头,然后点击原始数据,就可以出现下图所示结果。
请求行:请求数据第一行(请求方式、资源路径、协议)
请求头:第二行开始,格式key:value
常见的请求头:
请求体:POST请求,存放请求参数
1.请求体在请求头一个空行之后 ( 补充:GET方式的请求是没有请求体的。)
2.请求体一般是json格式的数据,由此我们也可以很明显的看出请求体可以传输更多的数据
(为什么请求体/POST请求可以传输更多的数据?)
tip:GET方式的请求:设置的参数都是在请求行的 “ ?”后面进行提供,GET请求大小在浏览器中是有限制的。(如:/brand/findAll?name=海绵宝宝&status=1)
POST方式的请求:设置的参数则往往是在请求体中一个完整的json格式的数据,POST请求大小是没有限制的。
小结:
1.Http协议中请求数据分为哪几个部分?
请求行(请求数据的第一行)
请求头(key:value)
请求体(与请求头之间隔了一个空行)
Q:在服务器端我们该如何获取传递过来的请求数据?
具体操作代码:
@RestController
public class RequestController {
@RequestMapping("/request")
public String request(HttpServletRequest request){
// 获取请求方式
String method = request.getMethod();
System.out.println("method:"+method);
//获取请求路径
String requestURI = request.getRequestURI();
System.out.println("requestURI:"+requestURI);
//获取请求参数
String queryString = request.getQueryString();
System.out.println("queryString:"+queryString);
// 获取请求协议
String protocol = request.getProtocol();
System.out.println("protocol:"+protocol);
// 获取请求头
String header = request.getHeader("User-Agent");
System.out.println("header:"+header);
return "success";
}
}
结果:
重点tip:
实战补充:1.alt+P AI自动生成提示代码
2.// 获取请求头 这里想获取什么请求头,参数里就填什么
String header = request.getHeader("User-Agent");
3.StringBuffer类型的数据java不能直接输出,要再调用toString()方法。