首页 > 编程语言 >【JavaWeb入门】了解HTTP

【JavaWeb入门】了解HTTP

时间:2024-06-09 18:00:38浏览次数:17  
标签:HTTP 浏览器 请求 入门 服务器 客户端 连接 JavaWeb

  1. HTTP协议简介

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。

HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。

  1. HTTP 请求/响应的步骤
    1. 客户端连接到Web服务器

一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如:http://www.baidu.com

    1. 发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

    1. 服务器接受请求并返回HTTP响应

Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

    1. 释放TCP连接

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源

(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个

HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

    1. 客户端浏览器解析HTML内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

      1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
      2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
      3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
      4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
      5. 浏览器将该 html 文本并显示内容;

  1. HTTP请求方法

HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:

GET

向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

HEAD

与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

POST

向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

PUT

向指定资源位置上传其最新内容。

DELETE

请求服务器删除Request-URI所标识的资源。

TRACE

回显服务器收到的请求,主要用于测试或诊断。

OPTIONS

这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送

OPTIONS请求,可以测试服务器功能是否正常运作。

CONNECT

标签:HTTP,浏览器,请求,入门,服务器,客户端,连接,JavaWeb
From: https://blog.csdn.net/2302_80050680/article/details/139563173

相关文章

  • STM32单片机开发入门(四) 示波器的介绍及使用方法
    文章目录一.概要二.探头补偿校准三.电压测量四.波形的测量与分析五.串口通讯波形测量解析六.触发捕捉瞬时信号七.小结一.概要示波器主要用于观察电信号的波形变化。在显示屏上,工程师可以直接看到电信号的全过程,从而进行定性和定量的分析。这种仪器通常用于显示电压......
  • 通过接口拿到代理,返回代理列表(只有http,无https)
    defget_proxies_list(num):res=requests.get(url=f"http://api.89ip.cn/tqdl.html?api=1&num={num*2}&port=&address=&isp=").textip_list=re_method(res,"<br>(.*?)<br>")proxies_list=[]foriin......
  • C# WPF入门学习主线篇(十六)—— Grid布局容器
    C#WPF入门学习主线篇(十六)——Grid布局容器欢迎来到C#WPF入门学习系列的第十六篇。在前几篇文章中,我们已经探讨了Canvas、StackPanel、WrapPanel和DockPanel布局容器及其使用方法。本篇博客将介绍另一种功能强大且灵活的布局容器——Grid。通过本文,您将学习如何使用......
  • Fortran入门(四)期末复习|数组
    一:字符数据处理1:字符关系字符比较是按ASCII码值的大小进行比较的。排列的基本规则是:空格字符最小,数字比字母小,大写字母比小写字母小。字符型数据比较遵循:(1)单个字符按ASCII比较(2)两个相同长度的字符串的比较是将字符串的字符从左到右逐个比较,以第一对不同字符的比较结果为准......
  • Fortran入门(一)(期末复习)
     一:基本数据类型1:整型数据(INTEGER)整型数据类型的性质整型数据类别名类别参数 字节数字节型11短整型22基本整型44长整型88这里需要注意:类别参数为1的整型变量,其有符号数的表示范围是-128~127在FORTRAN95中,数字串后有一个可任选的下划线后再跟类别参数,例如32_2......
  • Could not find artifact com.mysql:mysql-connector-j:pom:8.0.36 in central (https
    遇到修改依赖项的MySQL版本结果说找不到依赖项解决方法确保MySQL版本正确降低依赖项的MySQL版本,修改后更新即可以我的MySQL版本举例,可以降低MySQL版本到依赖项支持的版本<dependency><groupId>com.mysql</groupId><artifactId>m......
  • Java入门基础11:面向对象高级一(static、extends继承)
    Java面向对象高级特性有以下几个:继承,多态,封装,抽象,接口,匿名内部类,静态成员,final关键字,异常处理等。我会将它分为三章详细讲,本章主要讲静态和继承staticstatic叫静态,可以修饰成员变量、成员方法。类变量(静态成员变量):有static修饰,属于类,在计算机里只有一份,会被类的全部对象......
  • C++入门7 类|构造函数|析构函数
    一,类型设计和实例化对象封装是面向对象程序设计最基本的特性, 把数据 (属性) 和函数 (操作) 合成一个整体,这在计算机世界中是用类与对象实现的。C++中类的设计1 class 类型名称2 {3 public:4 成员列表1;5 protected:6 成员列表2;7 private:8 成员列表3;......
  • 项目:基于httplib/消息队列负载均衡式在线OJ
    文章目录写在前面关于组件开源仓库和项目上线其他文档说明项目亮点使用技术和环境项目宏观结构模块实现compiler模块runner模块compile_run模块compile_server模块基于MVC结构的OJ服务什么是MVC?用户请求服务路由功能Model模块view模块Control模块写在前面关于组件......
  • HTTP客户端框架之Retrofit
    目录1HTTP客户端框架Retrofit1.1引言1.2简介1.3简单使用1.3.1引入依赖1.3.2定义http接口1.3.3注入使用1.4HTTP请求相关注解1.5配置项1.5.1配置讲解1.5.2配置示例1.6高级功能1.6.1自定义注入OkHttpClient1.6.2注解式拦截器1.6.2.1继承BasePathMatchInterceptor编写......