您现在的位置是:首页 >学无止境 >SpringBoot、HTTP协议网站首页学无止境

SpringBoot、HTTP协议

小冯同学‍ 2024-07-05 00:01:02
简介SpringBoot、HTTP协议


在这里插入图片描述

1.SpringBoot

1.1介绍

我们可以打开Spring的官网(https://spring.io),去看一下Spring的简介:Spring makes Java simple(Spring使Java变得简单)

Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。而我们在项目开发时,一般会偏向于选择这一套spring家族的技术,来解决对应领域的问题,那我们称这一套技术为spring全家桶。
在这里插入图片描述
其中Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率 。

1.2 入门

【1】需求

需求:基于SpringBoot的方式开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串 “Hello World ~”。
在这里插入图片描述

【2】搭建环境

创建一个maven项目,在pom.xml中导入以下坐标
在这里插入图片描述

<!--设置父工程: 里面进行版本的锁定-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.2.RELEASE</version>
</parent>

<dependencies>
    <!--web环境起步依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

【3】HelloController

在com.itheima.controller包下创建

package com.itheima.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController // 表示一个接收前端请求的类
public class HelloController {

    @GetMapping("/hello") // 表示用于接收前端请求 /hello资源地址的方法
    public String hello() {
        return "Hello World~"; // 返回给前端一句话
    }
}

【4】启动类

在com.itheima包下创建

package com.itheima;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication // 表示当前是一个springBoot启动类
public class WebApp {

    // 程序入口
   public static void main(String[] args) { 
       // 启动springBoot工程
       SpringApplication.run(WebApp.class, args);
   }
}

【5】完整的工程结构

在这里插入图片描述

【6】启动并测试

在这里插入图片描述

1.3 访问流程

网络通信三要素:
● IP :网络中计算机的唯一标识
● 端口 :计算机中运行程序的唯一标识
● 协议 :网络中计算机之间交互的规则
在这里插入图片描述

2. HTTP协议

2.1 概述

HTTP (Hyper Text Transfer Protocol) 超文本传输协议,是互联网上应用最为广泛的一种网络协议。
作用:规范浏览器和服务器之间通信时传输数据的格式

在这里插入图片描述
特点:
● 基于TCP协议:面向连接,安全
● 基于请求-响应模型的:一次请求对应一次响应
● 无状态:每次请求之间都是相互独立的,也就是说HTTP协议本身无法记录上一次访问的数据
○ 缺点:多次请求之间不能共享数据
○ 优点:速度快

如果想知道http协议的数据传输格式有哪些,可以打开浏览器,点击F12打开开发者工具,点击Network来查看
在这里插入图片描述

2.2 HTTP请求

【1】查看HTTP请求

在这里插入图片描述

【2】请求行

1)格式

请求方式 请求路径 协议/版本号

2)例如

GET  /day03-web/index.html?username=jack&password=123 HTTP/1.1
POST /day03-web/index.html HTTP/1.1

3)请求方式有很多, 我们需要关注两种: get 和 post

  get		
        1)请求参数在地址栏显示,不太安全
        2)请求参数大小有限制
        3)没有消息体
   post		
        1)请求参数没有在地址栏显示,而是在请求体显示,相对安全
        2)请求参数大小没有限制
        3)有消息体

【3】请求头

1)格式

	请求头名称:请求头的值

2)常见请求头

  1. Host: 表示请求的主机名(服务器ip+端口号)
  2. User-Agent: 浏览器版本。 例如:Chrome浏览器的标识类似Mozilla/5.0 …Chrome/79 ,IE浏览器的标识类似Mozilla/5.0 (Windows NT …)like Gecko
  3. Accept:表示浏览器能接收的资源类型,如text/*,image/或者/*表示所有;
  4. Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
  5. Content-Type:请求体
  6. Content-Length:数据体的大小(单位:字节)

【4】请求体

格式
{key:value,key:value}
例如
{“username”:“jack”,“age”:18}

注意 get方式没有请求体,post方式有请求体

2.3 HTTP响应

【1】查看HTTP响应

HTTP的响应也是由行、头、体构成的。

【2】响应行

格式
协议/版本号 状态码 描述
例如
HTTP/1.1 200 OK
常见状态码
200:操作成功
404:请求路径没有对应资源
500: 服务器错误

【3】响应头

1)格式

响应头名称:响应头的值

2)常见响应头

  1. Content-Type:表示该响应内容的类型,例如text/html,image/jpeg ;
  2. Content-Length:表示该响应内容的长度(字节数);
  3. Content-Encoding:表示该响应压缩算法,例如gzip ;
  4. Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒 ;

【4】响应体

服务器返回的数据,由浏览器内核解析后展示给用户

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。