黑马JavaWeb开发笔记13——Springboot入门(创建、运行测试项目)、Http协议(请求响应协议)、HTTP协议解析

devtools/2024/12/22 9:32:44/
http://www.w3.org/2000/svg" style="display: none;">

文章目录

  • 前言
  • 一、SpringBoot介绍
  • 二、SpringBootWeb入门
    • 1. 需求
    • 2. 开发步骤
      • 2.1 创建SpringBoot工程(需要联网)
      • 2.2 定义请求处理类
      • 2.3 运行测试
  • 三、HTTP协议
    • 1. Http-概述
      • 1.1 介绍
      • 1.2 特点
    • 2. Http-请求协议
      • 2.1 GET方式的请求协议
      • 2.2 POST方式的请求协议
      • 2.3 GET请求和POST请求的区别
    • 3. Http-响应协议
      • 3.1 格式介绍
      • 3.2 响应状态码
    • 4. Http协议解析
  • 总结


前言

本篇文章是2023年最新黑马JavaWeb开发笔记13:Springboot入门(创建、运行&测试项目)、Http协议(GET, POST, 响应协议)、HTTP协议解析的总结,帮助需要学习Web开发的朋友温故而知新。

  1. SpringBoot介绍
  2. SpringBootWeb入门
  3. HTTP协议(请求、响应、协议解析)

一、SpringBoot介绍

  • 首先了解什么是Spring
    • 我们可以打开Spring的官网( https://spring.io ),去看一下Spring的简介:Spring makesJava simple
      https://i-blog.csdnimg.cn/direct/4b6d4aed303f4d67b9d9b9b35aa40a08.png" alt="在这里插入图片描述" />
  • Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。
  • 而我们在项目开发时,一般会偏向于选择这一套spring家族的技术,来解决对应领域的问题,那我们称这一套技术为spring全家桶
  • 而Spring家族旗下这么多的技术,最基础、最核心的是 SpringFramework。其他的spring家族的技术,都是基于SpringFramework的,SpringFramework中提供很多实用功能,如:依赖注入、事务管理、web开发支持、数据访问、消息服务等等
    https://i-blog.csdnimg.cn/direct/abfca136d3f34c3a877f83bc60393715.png" alt="在这里插入图片描述" />
    https://i-blog.csdnimg.cn/direct/2057c6c398b24a40bbfb37b016e06786.png" alt="在这里插入图片描述" />
  • 通过springboot就可以快速的帮我们构建应用程序,所以springboot呢,最大的特点有两个 :
    • 简化配置
    • 快速开发

二、SpringBootWeb入门

1. 需求

基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串:“Hello World ~”

2. 开发步骤

第1步:创建SpringBoot工程项目
第2步:定义HelloController类,添加方法hello,并添加注解
第3步:测试运行

2.1 创建SpringBoot工程(需要联网)

  • 基于Spring官方骨架,创建SpringBoot工程
    https://i-blog.csdnimg.cn/direct/6d5dda4693be480584f99a417e94b35b.png" alt="在这里插入图片描述" />

  • Springboot版本要选2.0版本,只有2.0版本才支持jdk11,3.0系列需要jdk17

  • 基本信息描述完毕之后,勾选web开发相关依赖
    https://i-blog.csdnimg.cn/direct/b62a775295234c80bc5d13ee68666e6d.png" alt="在这里插入图片描述" />

  • 点击Finish之后,就会联网创建这个SpringBoot工程,创建好之后,结构如下:
    https://i-blog.csdnimg.cn/direct/7c894301e08b4787a02e430361f9e947.png" alt="在这里插入图片描述" />

2.2 定义请求处理类

  • 在com.itheima这个包下创建一个子包controller
    https://i-blog.csdnimg.cn/direct/f67f22c82abd4863bc5fe5d975e72ce1.png" alt="在这里插入图片描述" />

  • 然后在controller包下新建一个请求处理类:HelloController

    • 此时只是一个普通的类,还不是请求处理类,需要加上一个标识,使其变成请求处理类
      https://i-blog.csdnimg.cn/direct/15fd295381d94bc7afce79a216cae813.png" alt="在这里插入图片描述" />
      https://i-blog.csdnimg.cn/direct/8db8a95f5cda4827aaa074aa2d1a980c.png" alt="在这里插入图片描述" />
java">package com.itheima.controller;
import org.springframework.web.bind.annotation.*;@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){System.out.println("Hello World ~");return "Hello World ~";}
}

2.3 运行测试

https://i-blog.csdnimg.cn/direct/e5fce3ba7ca54793b01fb588484128c6.png" alt="在这里插入图片描述" />
https://i-blog.csdnimg.cn/direct/35bdefe9acc8470bad7523ab88722709.png" alt="在这里插入图片描述" />

较新版本的IDEA中已经有hello请求处理类,所以运行时可以会报错,我们把方法名和映射的地址改成其他名字就行(我这里改成hella)
https://i-blog.csdnimg.cn/direct/33592e7215f84a5f82df0fab7af0dda2.png" alt="在这里插入图片描述" />
运行成功的指定端口在这里
https://i-blog.csdnimg.cn/direct/6ce3442fe6ff48c98963e8b55d6321f6.png" alt="在这里插入图片描述" />
打开网址
https://i-blog.csdnimg.cn/direct/0a6e6d553f1c474e8e95525918913224.png" alt="在这里插入图片描述" />
至此,快速入门完成

三、HTTP协议

1. Http-概述

1.1 介绍

https://i-blog.csdnimg.cn/direct/e05120e1721a44d48b73afb08317cc8c.png" alt="在这里插入图片描述" />

  • http是互联网上应用最为广泛的一种网络协议
  • http协议要求:浏览器在向服务器发送请求数据时,或是服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输
  • 如果想知道http协议的数据传输格式有哪些,可以打开浏览器,点击 F12 打开开发者工具,点击Network 来查看
    https://i-blog.csdnimg.cn/direct/fce26573ea1941e9b79c54fb84309a2d.png" alt="在这里插入图片描述" />
  • 浏览器向服务器进行请求时:服务器按照固定的格式进行解析
    https://i-blog.csdnimg.cn/direct/3742947cec99443a8e788d1024944c98.png" alt="在这里插入图片描述" />
  • 服务器向浏览器进行响应时:浏览器按照固定的格式进行解析
    https://i-blog.csdnimg.cn/direct/39a8b07f96d64e98b257e8cf0be49906.png" alt="在这里插入图片描述" />
    所以,我们学习HTTP主要就是学习请求和响应数据的具体格式内容。

1.2 特点

我们刚才初步认识了HTTP协议,那么我们在看看HTTP协议有哪些特点:

  • 基于TCP协议: 面向连接,安全
    https://i-blog.csdnimg.cn/direct/d387672d6a3e484080f2bf82c65f20a7.png" alt="在这里插入图片描述" />
  • 基于请求-响应模型: 一次请求对应一次响应(先请求后响应)
    https://i-blog.csdnimg.cn/direct/a9b2aff4fd744d74a3b13db355b90dda.png" alt="在这里插入图片描述" />
  • HTTP协议是无状态协议: 对于数据没有记忆能力。每次请求-响应都是独立的
    https://i-blog.csdnimg.cn/direct/d5b512142e4d4a26871f80e27b70f4dd.png" alt="在这里插入图片描述" />

2. Http-请求协议

  • 浏览器和服务器是按照HTTP协议进行数据通信的。
  • HTTP协议又分为:请求协议和响应协议
    • 请求协议:浏览器将数据以请求格式发送到服务器
      • 请求行:请求数据第一行(请求方式、资源路径、协议)
      • 请求头:第二行开始,格式key: value
      • 请求体:POST请求,存放请求参数
    • 响应协议:服务器将数据以响应格式返回给浏览器
      • 包括:响应行 、响应头 、响应体
  • 在HTTP1.1版本中,浏览器访问服务器的几种方式:
    https://i-blog.csdnimg.cn/direct/78a1bfe87782487eb5eeee956fc178ca.png" alt="在这里插入图片描述" />
    https://i-blog.csdnimg.cn/direct/106e8251e337420c95c2e7be74f1b2d9.png" alt="在这里插入图片描述" />
    在我们实际应用中常用的也就是 :GET、POST

2.1 GET方式的请求协议

https://i-blog.csdnimg.cn/direct/57d9951b7d6d4ee69d02b786f067e94c.png" alt="在这里插入图片描述" />

  • 请求行 :HTTP请求中的第一行数据。由:请求方式 、资源路径 、协议/版本组成(之间使用空格分隔)
    • 请求方式:GET
    • 资源路径:/brand/findAll?name=OPPO&status=1
      • 请求路径:/brand/findAll
      • 请求参数:name=OPPO&status=1
        • 请求参数是以key=value形式出现
        • 多个请求参数之间使用 & 连接
      • 请求路径和请求参数之间使用 ? 连接
    • 协议/版本:HTTP/1.1
  • 请求头 :第二行开始,上图黄色部分内容就是请求头。格式为key: value形式
    • http是个无状态的协议,所以在请求头设置浏览器的一些自身信息和想要响应的形式。这样
      服务器在收到信息后,就可以知道是谁,想干什么了
    • 常见的HTTP请求头有:
java">Host: 表示请求的主机名User-Agent: 浏览器版本。 例如:Chrome浏览器的标识类似Mozilla/5.0
...Chrome/79IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like
GeckoAccept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网
页;Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。Content-Type:请求主体的数据类型Content-Length:数据主体的大小(单位:字节)
  • 请求体 :存储请求参数
    • GET请求的请求参数在请求行中,故不需要设置请求体

2.2 POST方式的请求协议

https://i-blog.csdnimg.cn/direct/8a2513218a4640c8a5f4f9794df1beca.png" alt="在这里插入图片描述" />

  • 请求行(以上图中红色部分):包含请求方式、资源路径、协议/版本
    • 请求方式:POST
    • 资源路径:/brand
    • 协议/版本:HTTP/1.1
  • 请求头(以上图中黄色部分)
  • 请求体(以上图中绿色部分) :存储请求参数
    • 请求体和请求头之间是有一个空行隔开(作用:用于标记请求头结束)

2.3 GET请求和POST请求的区别

https://i-blog.csdnimg.cn/direct/2774f30d892740d786dba07614592f37.png" alt="在这里插入图片描述" />

3. Http-响应协议

3.1 格式介绍

与HTTP的请求一样,HTTP响应的数据也分为3部分:响应行、响应头 、响应体
https://i-blog.csdnimg.cn/direct/cf838c200ed644b7a5c04b484610fc27.png" alt="在这里插入图片描述" />

  • 响应行(以上图中红色部分):响应数据的第一行。响应行由:协议及版本响应状态码状态码描述组成
    • 协议/版本:HTTP/1.1
    • 响应状态码:200
    • 状态码描述:OK
  • 响应头(以上图中黄色部分):响应数据的第二行开始。格式为key: value形式
    • http是个无状态的协议,所以可以在请求头和响应头中设置一些信息和想要执行的动作,这样,对方在收到信息后,就可以知道你是谁,想干什么
  • 常见的HTTP响应头有:
java">Content-Type:表示该响应内容的类型,例如text/html,image/jpeg ;Content-Length:表示该响应内容的长度(字节数);Content-Encoding:表示该响应压缩算法,例如gzip ;Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300;Set-Cookie: 告诉浏览器为当前页面所在的域设置cookie ;
  • 响应体(以上图中绿色部分): 响应数据的最后一部分, 存储响应的数据
    • 响应体和响应头之间有一个空行隔开(作用:用于标记响应头结束)

3.2 响应状态码

https://i-blog.csdnimg.cn/direct/ce02840484ad400e8ec9306f4a83d9ca.png" alt="在这里插入图片描述" />
https://i-blog.csdnimg.cn/direct/7e40ee929ae54b2cbafe8287f9fc958d.png" alt="在这里插入图片描述" />

关于响应状态码,我们先主要认识三个状态码,其余的等后期用到了再去掌握:

  • 200 ok 客户端请求成功
  • 404 Not Found 请求资源不存在
  • 500 Internal Server Error 服务端发生不可预期的错误

状态码大全:https://cloud.tencent.com/developer/chapter/13553

4. Http协议解析

https://i-blog.csdnimg.cn/direct/ccbfe677cbe3451488be1985235e60fe.png" alt="在这里插入图片描述" />
将资料中准备好的Demo工程,导入到我们的IDEA中,有一个Server.java类,这里面就是自定义的一个服务器代码,主要使用到的是 ServerSocket 和 Socket

(此代码只是作为展示, 后期这些tomcat会自动生成, 大家了解即可)

  • 启动ServerSocket程序:
    https://i-blog.csdnimg.cn/direct/6fb8afe4535a4b3c8f63a42189e7949a.png" alt="在这里插入图片描述" />

  • 浏览器输入:http://localhost:8080 就会访问到ServerSocket程序

    • ServerSocket程序,会读取服务器上 html/a.html 文件,并把文件数据发送给浏览器
    • 浏览器接收到a.html文件中的数据后进行解析,显示以下内容
      https://i-blog.csdnimg.cn/direct/0a1282e9c24f4e49ac6d3d672028b97f.png" alt="在这里插入图片描述" />

现在学习了服务器是可以使用java完成编写,是可以接受页面发送的请求和响应数据给前端浏览器的,而在开发中真正用到的Web服务器,不会自己写,都是使用目前比较流行的web服务器。如:Tomcat。

下一笔记将讲解Tomcat。


总结

本篇文章是2023年最新黑马JavaWeb开发笔记13:Springboot入门(创建、运行&测试项目)、Http协议(GET, POST, 响应协议)、HTTP协议解析的总结,帮助需要学习Web开发的朋友温故而知新。


http://www.ppmy.cn/devtools/108913.html

相关文章

<Rust>egui学习之小部件(十):如何在窗口中添加复选框checkbox部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析,主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统:windows 平台:visual studio code 语言:rust 库:egui、eframe 概述 本文是本专栏的第十篇博…

全面掌握PythonJava分层自动化测试:从单元测试到安全检测的完整指南

分层自动化(Layered Automation)是一种软件测试策略,通过将自动化测试分为不同层次或阶段,针对不同类型的测试需求,确保测试覆盖的全面性以及提高测试效率。这种方法通过分解复杂的测试任务,将其分配到适当的层级,从而降低测试的维护成本并提高自动化测试的稳定性和复用…

shell编程--正则表达式

正则表达式 正则表达式都被置于两个正斜杠之间;如/l[oO]ve/ 示例 匹配数字的脚本,用户输入创建账号的数量 语法: [[ ^[0-9]$ ]] 表示必须输入数字 #!/bin/bashwhile : do read -p "输入数字:" numif [[ $num ~ ^[…

Windows下Python和PyCharm的应用(三)__Numpy与矩阵

1、背景介绍 矩阵运算是Python语言的基石。 而支持矩阵运算的基础语言包就是Numpy。 参考链接: Python中Numpy的使用_numpy在python中的用法-CSDN博客 这篇博客介绍的numpy比我的这篇博客介绍的更加的详细。本博客只是根据本人 的实际应用,对最关键的…

【GEE代码实例教程详解:NDVI时间序列趋势分析】

GEE(Google Earth Engine)是一个强大的云计算平台,用于处理和分析大规模地球科学数据集。以下是一个关于如何使用GEE进行NDVI(归一化植被指数)时间序列趋势分析的详细教程。 一、引言 NDVI时间序列趋势分析是一种统计…

【Hadoop|MapReduce篇】MapReduce概述

1. MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 2. Map…

统计进程的CPU和内存占用(最大,均值,90分位)

本文先通过top采集所有进程的CPU和内存情况并保存到文件,然后提取指定进程的数据,最后通过 python 对采集的数据进行可视化。 一、使用脚本采集top数据 1. 单次top输出如下 2. 编写脚本每隔1秒采集一次top数据保存到文件 #!/bin/bash# 按照年月日十分…

v0.dev快速开发

探索v0.dev:次世代开发者之利器 今之技艺日新月异,开发者之工具亦随之进步不辍。v0.dev者,新兴之开发者利器也,迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势,助汝速速上手,提升开发之…