javaweb学习day5--《HTML篇》Springboot的模块创建、HTML的相关知识点详解

一、前言

从今天开始,就要启动后端的学习了,Springboot会贯穿到底,一定要跟着小编严谨的去搭建Springboot环境,依赖添加的过程可能需要2分钟左右,读者们要耐心等待一下,搭建好Springboot之后才算正式的开始web后端的学习,http相关的内容仅供了解。

如果大家准备好的话那就一起开启我们的后端之旅。

二、springboot模块创建

第一步:右键单击->新建->模块

第二步:Springboot->按照顺序进行填写->下一步

注:jdk和java版本号保持一致

第三步:选择版本->勾选Spring Web->创建

三、http协议

3.1 HTTP 的特点和概述

无连接性

  • HTTP 协议是无连接的,即每次请求都是独立的,服务器处理完一个请求后会断开连接,下一个请求需要重新建立连接。这种特性使得每个请求都是独立的,不会保留状态信息,适合分布式的、基于请求-响应模型的网络环境。

无状态性

  • HTTP 协议是无状态的,即服务器不会保存每个客户端的请求信息。每次请求都是独立的,服务器处理完后即忘记。这要求客户端每次请求都要提供必要的信息,如 Cookie、Session ID 等,以维持状态。

简单和灵活

  • HTTP 协议简单直观,使用起来灵活。请求和响应都是文本形式,易于阅读和调试。它支持各种数据格式,如文本、图片、音频、视频等,使其成为广泛应用于互联网上的基础协议。

基于请求-响应模型

  • HTTP 是基于请求-响应模型的协议。客户端发送请求给服务器,请求中包含方法(如 GET、POST)、资源路径、协议版本等信息;服务器根据请求进行处理,并返回响应,响应中包含状态码、响应头和响应体等信息。

状态码和头部信息

  • HTTP 使用状态码来表示请求的处理结果,如200表示成功,404表示未找到资源,500表示服务器内部错误等。同时,HTTP 使用头部信息(Header)来传递额外的请求和响应信息,如内容类型、长度、Cookie等。

安全性和扩展性

  • HTTP 协议本身不具备加密功能,通信内容可以被窃听和篡改,为了提高安全性,可以在 HTTP 上加入 SSL/TLS 协议形成 HTTPS。HTTP 协议也支持通过扩展头部和方法来实现功能的扩展,如缓存控制、身份认证等。

3.2 请求协议

HTTP 请求协议是客户端向服务器发送请求时所遵循的规范和格式。它定义了请求的结构、方法、请求头部、请求体等内容。

请求行(Request Line):

请求行包含了请求的方法、资源路径和协议版本,格式如下:

METHOD PATH VERSION
  • METHOD:请求方法,例如 GET、POST、PUT、DELETE 等,用来指定请求的类型和操作方式。
  • PATH:请求的资源路径,即服务器上请求资源的位置。
  • VERSION:HTTP 协议的版本号,通常是 HTTP/1.1 或 HTTP/2。

示例:

GET /index.html HTTP/1.1

请求头部(Request Headers):

请求头部包含了关于请求的各种信息,如客户端信息、请求内容类型、认证信息等。每个头部字段都以键值对形式出现,格式如下:

HeaderName: Value

常见的请求头部包括:

  • Host:请求的主机名,指示服务器请求的目标。
  • User-Agent:发送请求的用户代理(浏览器、爬虫等)信息。
  • Content-Type:请求体的类型(仅在有请求体时使用)。
  • Authorization:认证信息,用于访问受保护的资源。

示例:

Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36

请求体(Request Body):

某些请求(如 POST、PUT)可能会包含数据或内容,这些数据在请求体中传输。请求体的格式和内容根据请求的方法和需要而有所不同,通常是文本、JSON 数据或二进制数据。

示例:

POST /submit-form HTTP/1.1
Host: www.example.com
Content-Type: application/json

{
  "username": "user123",
  "password": "pass123"
}

HTTP 请求的基本流程:

  1. 建立连接:客户端与服务器建立 TCP 连接。
  2. 发送请求:客户端向服务器发送格式正确的 HTTP 请求。
  3. 服务器处理:服务器接收、解析并处理请求。
  4. 发送响应:服务器生成并发送 HTTP 响应给客户端。

3.3 响应协议

HTTP 响应协议是服务器响应客户端请求时遵循的规范和格式,它定义了响应的结构、状态码、响应头部、响应体等内容。

状态行(Status Line):

状态行包含了响应的协议版本、状态码和状态消息,格式如下:

VERSION STATUS_CODE REASON_PHRASE

  • VERSION:HTTP 协议的版本号,通常是 HTTP/1.1 或 HTTP/2。
  • STATUS_CODE:三位数字的状态码,表示服务器对请求的处理结果。
  • REASON_PHRASE:对状态码的简短描述,方便人类阅读,但实际上并不影响机器处理。

HTTP/1.1 200 OK

响应头部(Response Headers):

响应头部包含了关于响应的各种信息,如服务器类型、响应内容类型、日期等。每个头部字段同样以键值对形式出现,格式如下:

HeaderName: Value

常见的响应头部包括:

  • Content-Type:响应体的类型。
  • Content-Length:响应体的长度。
  • Date:响应的日期和时间。
  • Server:服务器的软件信息。
  • Set-Cookie:设置客户端的 Cookie 信息。

示例:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Date: Sat, 10 Jul 2024 12:00:00 GMT
Server: Apache/2.4.38 (Ubuntu)

响应体(Response Body):

响应体包含了服务器返回给客户端的实际内容,格式和内容根据响应的内容类型而有所不同,可以是文本、HTML、JSON 数据或二进制数据等。

示例:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1234

<!DOCTYPE html>
<html>
<head>
  <title>Welcome to Example.com</title>
</head>
<body>
  <h1>Hello, World!</h1>
  <p>This is a sample HTML response.</p>
</body>
</html>

HTTP 响应的基本流程:

  1. 接收请求:服务器接收客户端的 HTTP 请求。
  2. 处理请求:服务器处理请求,生成需要的数据和响应。
  3. 发送响应:服务器将响应的状态行、头部和体发送给客户端。

3.4 协议解析

 1. 请求方法(Request Methods)

HTTP 定义了几种请求方法,常见的包括:

  • GET:请求指定的资源。
  • POST:向指定资源提交数据进行处理请求(如提交表单或上传文件)。
  • PUT:上传指定的资源。
  • DELETE:删除指定的资源。
  • HEAD:获取报头信息,类似于 GET 请求,但服务器只返回报头,不返回实体的主体部分。
  • OPTIONS:列出可对资源实行的请求方法,用来查询服务器支持的方法。

2. 状态码(Status Codes)

HTTP 使用状态码来表示服务器对请求的处理结果,常见的状态码包括:

  • 2xx:成功。例如,200 表示请求成功。
  • 3xx:重定向。例如,301 表示永久重定向,302 表示临时重定向。
  • 4xx:客户端错误。例如,404 表示未找到请求的资源。
  • 5xx:服务器错误。例如,500 表示服务器内部错误。

3. 报文结构

HTTP 报文分为请求报文和响应报文:

  • 请求报文包括请求行、请求头部和请求体。
  • 响应报文包括状态行、响应头部和响应体。

4. 连接管理

HTTP/1.1 引入了持久连接(persistent connection)的概念,使得在同一个 TCP 连接上可以发送和接收多个 HTTP 请求和响应,减少了连接建立和关闭的开销,提高了性能。

URL(Uniform Resource Locator)

URL 是统一资源定位符,用来唯一标识互联网上的资源。HTTP 使用 URL 来指定请求的资源地址,包括协议类型(http:// 或 https://)、主机名、路径、查询参数等信息。

5. 安全性

HTTP 并不具备加密功能,因此传输的数据在传输过程中可能会被窃听或篡改。为了解决这个问题,HTTPS(HTTP Secure)应运而生,通过 SSL/TLS 加密协议来保证通信安全。

6. 版本演变

  • HTTP/0.9:最早的版本,只支持 GET 方法,没有头部信息,响应只包含 HTML 文档。
  • HTTP/1.0:引入了多种请求方法、状态码、头部字段等。
  • HTTP/1.1:支持持久连接、流水线处理、Host 头部字段等,广泛应用于现代 Web。
  • HTTP/2:引入了新的二进制格式,多路复用、头部压缩等,提升了性能。
  • HTTP/3:基于 UDP 实现,提供更快的传输速度和更好的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/797762.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D 转换微信小游戏指引 03 微信SDK

Unity3D 转换微信小游戏指引系列&#xff08;第三期&#xff09; 微信SDK 初始化 首先&#xff0c;进行 SDK 初始化&#xff0c;需要引用命名空间 using WeChatWASM&#xff0c;调用 WX.InitSDK&#xff0c;在回调函数中进行游戏主逻辑的初始化。 using System.Collections…

0708,LINUX目录相关操作 + LINUX全导图

主要是冷气太足感冒了&#xff0c;加上少吃药抗药性差&#xff0c;全天昏迷&#xff0c;学傻了学傻了 01&#xff1a;简介 02&#xff1a; VIM编辑器 04&#xff1a;目录 05&#xff1a;文件 03&#xff1a;常用命令 06&#xff1a;进程 07&#xff1a;进程间的通信 cat t_c…

Keil出现警告:warning: #223-D: function “XXX“ declared implicitly

1、警告 \SYSTEMwarning: #223-D: function “FLASH_SetLatency” declared implicitly 2、原因 文件涉及调用stm32f10x_flash.h里的函数&#xff0c;但文件没有包含stm32f10x_flash.h 3、解决 1、点击魔法棒-》c/c》include paths-》包含头文件所在路径 2、直接在报错的文…

LeetCode 441, 57, 79

目录 441. 排列硬币题目链接标签思路代码 57. 插入区间题目链接标签思路两个区间的情况对每个区间的处理最终的处理 代码 79. 单词搜索题目链接标签原理思路代码 优化思路代码 441. 排列硬币 题目链接 441. 排列硬币 标签 数学 二分查找 思路 由于本题所返回的 答案在区间…

Qt中https的使用,报错TLS initialization failed和不能打开ssl.lib问题解决

前言 在现代应用程序中&#xff0c;安全地传输数据变得越来越重要。Qt提供了一套完整的网络API来支持HTTP和HTTPS通信。然而&#xff0c;在实际开发过程中&#xff0c;开发者可能会遇到SSL相关的错误&#xff0c;例如“TLS initialization failed”&#xff0c;cantt open ssl…

春招冲刺百题计划|双指针

Java基础复习 Java数组的声明与初始化Java ArrayListJava HashMapJava String 类Java LinkedListJava Deque继承LinkedListJava SetJava 队列优先队列:第二题用到了Java数组划分Java数组转ArrayListString 转数字String 这一部分&#xff0c;代码随想录写得超级好&#xff01…

LabVIEW阀门运动PCT测试

开发了一套基于LabVIEW的阀门运动PCT&#xff08;Pressure-Composition-Temperature&#xff09;测试方法。该系统通过控制阀门运动&#xff0c;实现对氢气吸附和解吸过程的精确测量和控制。所用硬件包括NI cDAQ-9174数据采集模块、Omega PX309压力传感器、SMC ITV2030电动调节…

【java算法专场】滑动窗口(下)

目录 水果成篮 算法分析 算法步骤 示例 算法代码 找到字符串中所有字母异位词 算法分析 算法步骤 示例 算法代码 优化 算法代码 串联所有单词的子串 算法分析 算法步骤 示例 算法代码 最小覆盖子串 算法分析 算法步骤 示例 算法代码 算法分析 这道题其实…

Python数据分析案例52——基于SSA-LSTM的风速预测(麻雀优化)

案例背景 又要开始更新时间序列水论文的系列的方法了&#xff0c;前面基于各种不同神经网络层&#xff0c;还有注意力机制做了一些缝合模型。 其实论文里面用的多的可能是优化算法和模态分解&#xff0c;这两个我还没出专门的例子&#xff0c;这几天正好出一个优化算法的例子来…

go-高效处理应用程序数据

一、背景 大型的应用程序为了后期的排障、运营等&#xff0c;会将一些请求、日志、性能指标等数据保存到存储系统中。为了满足这些需求&#xff0c;我们需要进行数据采集&#xff0c;将数据高效的传输到存储系统 二、问题 采集服务仅仅针对某个需求开发&#xff0c;需要修改…

树莓派pico入坑笔记,esp01/01s使用

目录 关于树莓派pico和circuitpython的更多玩法&#xff0c;请看树莓派pico专栏 说明 关于at指令 WiFi的at指令 UDP的at指令 样例程序 调试助手端输入指令 sta端程序 效果 进阶使用 库函数说明 样例代码 关于树莓派pico和circuitpython的更多玩法&#xff0c;请看树…

TensorFlow系列:第四讲:MobileNetV2实战

一. 加载数据集 编写工具类&#xff0c;实现数据集的加载 import keras""" 加载数据集工具类 """class DatasetLoader:def __init__(self, path_url, image_size(224, 224), batch_size32, class_modecategorical):self.path_url path_urlself…

H5的Canvas如何画N叉树数据结构

大家好。我是猿码叔叔&#xff0c;一位有着 5 年Java工作经验的北漂&#xff0c;业余时间喜欢瞎捣鼓&#xff0c;学习一些新东西来丰富自己。看过上一篇 Java 方法调用关系的老铁们&#xff0c;也许遗留了不少疑问&#xff0c;这Java方法调用关系可视化页面就这&#xff1f;这方…

护网HW面试——redis利用方式即复现

参考&#xff1a;https://xz.aliyun.com/t/13071 面试中经常会问到ssrf的打法&#xff0c;讲到ssrf那么就会讲到配合打内网的redis&#xff0c;本篇就介绍redis的打法。 未授权 原理&#xff1a; Redis默认情况下&#xff0c;会绑定在0.0.0.0:6379&#xff0c;如果没有采用相关…

基于SpringBoot的校园志愿者管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 个人中心 志愿者管理 活动信息…

黑马头条微服务学习day01-环境搭建、SpringCloud微服务(注册发现、网关)

文章目录 项目介绍环境搭建项目背景业务功能技术栈说明 nacos服务器环境准备nacos安装 初始工程搭建环境准备主体结构 app登录需求分析表结构分析手动加密微服务搭建接口定义功能实现登录功能实现 Swagger使用app端网关nginx配置 项目介绍 环境搭建 项目背景 业务功能 技术栈说…

数据结构(Java):树二叉树

目录 1、树型结构 1.1 树的概念 1.2 如何判断树与非树 1.3 树的相关概念 1.4 树的表示形式 1.4.1 孩子兄弟表示法 2、二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的遍历 1、树型结构 1.1 树的概念 树型结构是一种非线…

MySQL复合查询(重点)

前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;在实际开发中这远远不够。 基本查询回顾 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J mysql> select * from emp where (sal>500 or jobMANAGER) and ename l…

数据湖仓一体(一) 编译hudi

目录 一、大数据组件版本信息 二、数据湖仓架构 三、数据湖仓组件部署规划 四、编译hudi 一、大数据组件版本信息 hudi-0.14.1zookeeper-3.5.7seatunnel-2.3.4kafka_2.12-3.5.2hadoop-3.3.5mysql-5.7.28apache-hive-3.1.3spark-3.3.1flink-1.17.2apache-dolphinscheduler-3.1.9…