首页 > 编程语言 >Java登陆第二十六天——Http

Java登陆第二十六天——Http

时间:2023-12-20 16:00:44浏览次数:37  
标签:第二十六 Java 请求 报文 Http 响应 HTTP 浏览器

Http是一种基于TCP/IP的协议。相同的,它有客户端和服务端。

Http的交互方式

客户端向服务端发送的总是请求;服务端向客户端返回的总是响应
image

Http的版本

  1. HTTP/0.9:初代目
    • 单行HTTP,只能返回一个HTML页面
  2. HTTP/1.0:二代目
    • 每次请求和响应都会建立和关闭一次连接(短链接)
    • 新增了三种请求方式:GET、POST、HEAD
    • 每个请求都附加了HTTP版本
    • 请求和响应都包含HTTP报文头。并且响应开始时要发送状态码
    • 可以传输HTML以外的文档
  3. HTTP/1.1:三代目
    • 支持七种请求方法:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE
    • 单次请求只会建立和关闭一次连接(长链接)
    • 缓存技术
    • 三代目服役期间更是出现了HTTPS,是一种安全加密通信的HTTP

现在最主流的依然是HTTP/1.1,尽管已经出现了HTTP/2和HTTP/3

短链接和长链接的区别

某服务器现有HTML页面如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="Test.css" rel="stylesheet">
</head>
<body>
    <img src="finger.jpg">
    <p>该HTML页面中,存在css资源Test.css</p>
    <p>该HTML页面中,存在图片资源finger.jpg</p>
</body>
</html>

短链接
image

长链接
image

Http的数据格式

  • 报文
    • 不论是客户端向服务端发送的数据,还是服务端向客户端发送的数据,统称报文

客户端发送的总是请求报文;服务端响应的总是响应报文
image

在浏览器中抓取报文

F12进入开发者工具-Network(网络)
image

请求报文首部解析

例如上图中,请求报文行

GET	/JavaWeb_war_exploded/	HTTP/1.1
请求方式	资源路径	协议及版本
  • 请求报文头

    • 报文头:报文值
//浏览器支持的文件类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*,...;

//浏览器支持的压缩格式
Accept-Encoding: gzip, deflate, br

//浏览器支持的语言
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

//长连接
Connection: keep-alive

//请求协议自动升级(自动根据服务器的请求,升级浏览器请求)
Upgrade-Insecure-Requests: 1

//主机虚拟地址
Host: localhost:8080

//用户系统信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

依旧是无需记忆,遇见时自行查询即可Http常见的请求头和响应头更多的报文头

如果请求方式是POST,请求报文就有请求报文主体(默认请求方式是GET)

image

请求报文首部解析

例如上图中,响应报文行

HTTP/1.1	200
协议及版本	状态码
  • 响应报文头

    • 报文头:报文值
//响应报文主体的数据类型(浏览器根据该类型进行对应的解析)
Content-Type: text/html;charset=UTF-8

//响应报文主体的字节数(浏览器根据该数值查看是否损失数据)
Content-Length: 169

//长连接,20秒后关闭链接
Keep-Alive: timeout=20

常见的状态码(响应状态码)

状态码 描述
200 请求成功,浏览器会把响应报文主体(一般是html)解析并显示到浏览器中
302 重定向
304 使用了本地缓存(HTTP/1.1的缓存技术),第二次访问相同的页面,其中一些资源会使用本地缓存
404 资源未找到
405 请求方式不允许
500 服务器内部出现错误(一般是代码异常)

更多状态码

标签:第二十六,Java,请求,报文,Http,响应,HTTP,浏览器
From: https://www.cnblogs.com/Ocraft/p/17916686.html

相关文章

  • Java IO 模型
    IO是个啥IO,是input/output的缩写,表面意思是输入/输出,描述计算机中数据流动的过程,实际上就是CPU、内存和外部进行数据交换的过程举个例子,某个进程要获取到数据的过程如下:1.请求:进程请求外部数据2.准备:缓冲区准备数据,通过磁盘或者网络读取数据到内核空的缓冲区3.拷贝:将数......
  • Java中“100==100”为true,而"1000==1000"为false?
    前言今天跟大家聊一个有趣的话题,在Java中两个Integer对象做比较时,会产生意想不到的结果。例如:Integera=100;Integerb=100;System.out.println(a==b);其运行结果是:true。而如果改成下面这样:Integera=1000;Integerb=1000;System.out.println(a==b);其运行......
  • 秦疆的Java课程笔记:79 异常 自定义异常及经验小结
    使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。(秦疆老师:用的不多,但开源框架或者大型系统会用到。)用户自定义异常类,只需要继承Exception类即可。自定义异常类的步骤:创建自定义异常类在方法中通过throw关键字抛出异常对象......
  • Java学习之apache poi操作Excel文件
    创建Java项目,然后加入Maven依赖如下:读取指定的Excel文件写入既存的Excel文件 创建新的Excel,添加文件内容......
  • 《深入浅出Java虚拟机:JVM原理与实战》
    ......
  • Java零基础-反射
    前言Java是目前最流行的开发语言之一,在软件开发领域广泛应用。反射是Java的一项重要特性,它使得程序在运行时可以动态地获取和操作类、方法、属性等信息,极大地提高了Java的灵活性和可扩展性。本文将介绍Java反射的基本概念、使用方法、应用场景和优缺点,旨在为Java初学者提供一份简......
  • Java基本数据类型、包装类及拆装箱详解
    Java的基本数据类型和对应的包装类是Java语言中处理数据的两个关键概念。基本数据类型提供了简单而高效的方式来存储数据,而包装类使得基本数据类型具有对象的特性。本文将深入探讨基本数据类型与包装类的应用场景及详细描述,并对自动拆箱和装箱的源码实现进行分析。基本数据类型与包......
  • java 特殊操作流
    一、输入流和输出流  1、输入流 2、输出流 二、字节打印流和字符打印流 1、字节打印流 2、字符打印流 三、对象序列化流和对象反序列化流1、对象序列化流 ......
  • 【java】工业园区高精准UWB定位系统源码
    UWB(ULTRAWIDEBAND,UWB)技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。UWB定位系统依托在移动通信,雷达,微波电路,云计算与大数据处理等专业领域的多年积累,自主研发,开发并产业化的一套UWB精确定位系统,最高定位精......
  • Java8 list的lambda表达式
    List<PersonList>list=newArrayList<PersonList>(){{add(newPersonList("张三","1"));add(newPersonList("李四","2"));add(newPersonList("王五","3"));add(newPersonLi......