HTTP协议1.什么是HTTP协议?
- 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用广泛的一种网络协议 。是工作在tcp/ip协议基础上的,所有的www文件都遵守这个标准
- http1.0 短连接http1.1长连接
- HTTP是TCP/IP协议的一个应用层协议,HTTP也是我们web开发的基础
- HTTP请求头大全 - 常用参考表对照表
- HTTP状态码大全 - 常用参考表对照表
快捷键ctrl+shift+i或者f12
文章插图
浏览器请求资源的UML图详见Tomcat01-3.9浏览器访问web服务器过程详解2.2页面请求次数分析如下,新建一个web项目,在web文件夹中编写test.html文件
文章插图
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>http请求的问题</title></head><body><h1>图片</h1><img src="https://www.huyubaike.com/biancheng/img/1.jpg" width="300px"><img src="https://www.huyubaike.com/biancheng/img/2.jpg" width="300px"></body></html>
当浏览器访问test.html页面时,一共发出了几次请求?答:一共发出了三次请求 。
- 第一次请求的是test.html文件
- 当浏览器解析发现tese.html中还有
<img src="https://www.huyubaike.com/biancheng/img/1.jpg" width="300px"> <img src="https://www.huyubaike.com/biancheng/img/2.jpg">
时 - 会向服务器继续发送请求,要1.png和2.png图片的资源,一共三次请求
验证启动Tomcat服务器 , 在浏览器中按f12打开控制台:
文章插图
可以看到浏览器一共请求了三次,第一次是html,后两次是jpg图片
favicon.ico是网站的图标,每次都会默认请求,这里忽略3.HTTP请求包分析(GET)
文章插图
演示:HTTP请求(GET)-有数据提交情况
新建一个java项目 , 添加web支持 , 导入servlet-api的jar包,创建Tomcat 。
文章插图
文章插图
在src目录下创建LoginServlet,给页面返回数据
package li.servlet;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.annotation.*;import java.io.IOException;import java.io.PrintWriter;/** * LoginServlet */@WebServlet(urlPatterns = {"/login"})public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//服务器端输出System.out.println("LoginServlet doGet() 被调用");//输出一句话,返回给浏览器//1.通过response获取一个流PrintWriter,可以给浏览器回复数据//2.为了让浏览器显示中文,需要设置编码为utf-8//(1)给回送的数据设置编码 (2)text/html这个是MIME , 即告诉浏览器返回的数据是//text类型下的html格式数据[MIME类型](3)charset=utf-8给数据设置编码//注意:设置编码要在 response.getWriter()之前,否则无效response.setContentType("text/html;charset=utf-8");PrintWriter writer = response.getWriter();writer.print("<h1>登录成功~</h1>");//为了确保数据返回,可以调用flush()和close()//flush()表示将缓存的数据进行刷新writer.flush();//close()表示关闭流,有些语言是close方法中就包含了flush方法writer.close();//建议调用flush()和close()}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//服务器端输出System.out.println("LoginServlet doPost() 被调用");//输出一句话,返回给浏览器//1.通过response获取一个流PrintWriter,可以给浏览器回复数据//2.为了让浏览器显示中文,需要设置编码为utf-8//(1)给回送的数据设置编码 (2)text/html这个是MIME,即告诉浏览器返回的数据是//text类型下的html格式数据[MIME类型](3)charset=utf-8给数据设置编码//注意:设置编码要在 response.getWriter()之前,否则无效response.setContentType("text/html;charset=utf-8");PrintWriter writer = response.getWriter();writer.print("<h1>POST登录成功~</h1>");//为了确保数据返回,可以调用flush()和close()//flush()表示将缓存的数据进行刷新writer.flush();//close()表示关闭流,有些语言是close方法中就包含了flush方法writer.close();//建议调用flush()和close()}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ABAP 调用HTTP上传附件
- 真正“搞”懂HTTP协议03之时间穿梭
- 网络协议之:redis protocol 详解
- FHE学习笔记 #2 多项式环
- .NET性能优化-是时候换个序列化协议了
- 【lwip】10-ICMP协议&源码分析
- 【lwip】09-IPv4协议&超全源码实现分析
- GNN 101
- 概念+协议的了解+OSI七层模型,TCP/IP五层协议,网络数据传输流程 Linux--网络基础
- netty系列之: 在netty中使用 tls 协议请求 DNS 服务器