HTTP协议
HTTP协议概述
超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
-
HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
-
HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
-
协议: 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。
当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。
基础术语:
-
客户端: 主动发起网络请求的一端
-
服务器: 被动接收网络请求的一端
-
请求: 客户端给服务器发送的数据
-
响应: 服务器给客户端返回的数据
HTTP 协议的重要特点: 一发一收,一问一答}
当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互,为此为了更加清楚的了解我们访问一个网站时 HTTP 请求/协议是怎么交互的,可以 通过 F12 打开浏览器的开发者工具,点击 Network 标签页,然后刷新页面就行。显示的每一条记录都是一次 HTTP 请求/响应
特点:
- 基于TCP协议:面向连接,安全
- 基于请求-相应模型:一次请求对应一次响应
- HTTP协议时无状态的协议:对于事务处理没有记忆能力,每次请求-响应都是独立的。
- 缺点:多次请求间不能共享数据
- 优点:速度快
- 解决方法:会话技术
请求协议(由浏览器发起)
HTTP请求格式
- 请求行
- 请求头
- 请求体
请求行
包括
- 请求方式
- 资源路径
- 协议
请求头
格式:key:value
常见的请求头的含义:
请求体
存放请求参数的地方,但是不是所有的请求类型都有请求体:
请求方式-POST:有请求体
请求方式-GET:无请求体,请求参数放在请求行中,例如:
GET/brand/findAll?key1=value1&&key2=value2 HTTP/1.1
响应协议(由服务端发起)
HTTP响应格式
- 响应行
- 响应头
- 响应体
响应行
- 协议
- 状态码
- 描述
例如:HTTP/1.1 200 OK
状态码根据首位数字可以分为五类:
常见的响应状态码:
响应头
响应体
存放响应的数据
协议解析
-
客户端浏览器解析响应(自动)
-
服务端解析请求(使用WEB服务器,无需自己结合Servlet编程)
WEB服务器
是指运行在服务器上,用于处理和响应Web请求的软件或程序。它接收来自客户端(如浏览器)发送的HTTP请求,并返回相应的HTTP响应。WEB服务器负责处理静态文件、动态内容生成、请求路由、安全性等任务。
以下是一些常见的WEB服务器和相关工具:
- Apache HTTP Server: Apache是一个开源的、跨平台的WEB服务器软件,广泛用于互联网和企业环境。
- Nginx: Nginx是一个高性能的WEB服务器和反向代理服务器,可处理大量并发连接。
- Microsoft Internet Information Services (IIS): IIS是由Microsoft开发的WEB服务器,用于Windows操作系统。
- Node.js: Node.js是基于Chrome V8引擎的JavaScript运行时环境,可用于构建高度可扩展的WEB服务器。
- Tomcat: Apache Tomcat是一个用于Java Servlet和JavaServer Pages(JSP)的开源WEB服务器和Servlet容器。
- Jetty: Jetty是一个轻量级的Java WEB服务器和Servlet容器,适用于嵌入式系统和开发环境。
- Lighttpd: Lighttpd是一个快速、安全、灵活的WEB服务器,特别适用于高性能的Web应用程序。
Tomcat是一个使用Java编写的开源WEB服务器和Servlet容器。它的原理是通过实现Java Servlet规范和JavaServer Pages(JSP)规范,为Java Web应用程序提供服务。
TOMCAT
Tomcat的工作原理如下:
- 客户端发送请求:当客户端(如浏览器)发送HTTP请求时,请求会被发送到Tomcat服务器。
- 请求路由:Tomcat服务器接收到请求后,根据请求的URL将其路由到相应的Servlet或JSP页面。
- Servlet处理:对于Servlet请求,Tomcat会调用相应的Servlet进行处理。Servlet是Java编写的服务器端组件,用于处理请求并生成响应。Servlet可以通过Tomcat提供的Servlet API来访问请求参数、处理业务逻辑,并生成HTTP响应。
- JSP编译与执行:对于JSP请求,Tomcat会将JSP文件编译成Java Servlet,然后再执行编译后的Servlet。JSP文件包含Java代码和HTML标记,编译后的Servlet会生成相应的HTML内容。
- HTTP响应返回:Servlet或JSP处理完成后,Tomcat会将生成的HTTP响应返回给客户端。
与Java的结合:
Tomcat和Java紧密结合,它内置了Java Servlet规范和JSP规范的实现。Java Web应用程序开发者可以使用Java编写Servlet和JSP页面,并将它们部署到Tomcat服务器中。
在Java Web应用程序中,开发者可以使用Tomcat提供的Servlet API来处理请求和生成响应。Servlet API包含了一组类和接口,用于处理HTTP请求、访问请求参数、管理会话、操作Cookie等。
编写Servlet和JSP页面,并将它们部署到Tomcat服务器中。
在Java Web应用程序中,开发者可以使用Tomcat提供的Servlet API来处理请求和生成响应。Servlet API包含了一组类和接口,用于处理HTTP请求、访问请求参数、管理会话、操作Cookie等。
通过将Java Web应用程序部署到Tomcat服务器,Tomcat会负责接收和处理来自客户端的请求,调用相应的Servlet或JSP页面进行处理,并将生成的响应返回给客户端。这种结合使得开发者能够使用Java编写强大的服务器端逻辑,处理动态内容生成和业务逻辑。