SpringBootWeb基础篇

SpringBoot入门

前言:什么是Spring?

Spring家族提供了一整套完整的Java应用程序开发解决方案,从底层框架到上层应用,从单体应用到分布式系统,都可以使用Spring家族中的项目和技术来实现。Spring家族的出现极大地简化了Java应用程序的开发过程,提高了开发效率和应用程序的质量。
Snipaste_2024-03-03_09-32-48.png
Spring全家桶:
image.png
其中最核心,最基础的就是SpringFramework。其他spring家族的技术都是基于SpringFramework。它提供很多实用功能,如:依赖注入、事务管理、web开发支持、数据访问、消息服务等等。

但是他也有问题:1.配置繁琐 2.入门难度大

这时就推出了SpringBoot:
SpringBoot是一个用于快速创建企业级应用程序的开源框架,使开发人员能够更快速地创建和部署高质量的应用程序 。Spring makes Java simple

在web的课程中,SpringBoot贯穿始终,他也是Spring官方推荐的学习之首
Snipaste_2024-03-03_09-38-41.png


SpringBootWeb快速入门

需求:
image.png

  1. 首先创建一个Springboot工程,并勾选web开发所需的依赖
  2. 在main包下创建一个HelloController ,添加方法hello,并添加注解
  3. 测试

1创建:
分为创建springboot项目和模块,现在我们先创建项目
(之前我们设置了创建项目自动创建maven)
Snipaste_2024-03-03_11-41-49.png
2.接着创建hellocontroller类
image.png
image.png
3.运行
Snipaste_2024-03-03_11-47-40.png
网页:
image.png
控制台:
image.png


HTTP协议

超文本传输协议:规定了浏览器和服务器之间数据传输的规则。
image.png
特点:

  1. 基于TCP协议:面向连接,安全
  2. 基于请求-响应模型:一次请求对应一次响应
  3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
    1. 缺点:多次请求间不可共享数据
      1. 如:将商品加入购物车是一个请求 -响应操作,发起去购物车结算的请求后,因为无法获取哪些商品加入了购物车,会导致此次请求无法正确展示数据。具体使用的时候,我们发现京东是可以正常展示数据的,原因是Java早已考虑到这个问题,并提出了使用会话技术(Cookie、Session)来解决这个问题。
    2. 优点:速度快

请求数据格式:

  • 请求行:第一行(请求方式+资源路径+协议)
  • 请求头:第二行开始,格式key:value
  • 请求体:POST请求,存放请求参数

基于之前用SpringBoot开发的一个请求相应程序,运行
打开浏览器检查模式
点击Network,查看请求报文
分别是请求行,请求头,请求体
image.png

Host: 表示请求的主机名

User-Agent: 浏览器版本。 例如:Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79 ,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko

Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;

Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;

Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

Content-Type:请求主体的数据类型

Content-Length:数据主体的大小(单位:字节)

常用请求方式:
image.png

响应数据格式:

响应行:协议+状态码+描述
响应头:格式key:value
响应体:存放响应数据
image.png

ontent-Type:表示该响应内容的类型,例如text/html,image/jpeg ;

Content-Length:表示该响应内容的长度(字节数);

Content-Encoding:表示该响应压缩算法,例如gzip ;

Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒 ;

Set-Cookie: 告诉浏览器为当前页面所在的域设置cookie ;

响应状态码

状态码分类说明
1xx响应中 — 临时状态码。表示请求已经接受,告诉客户端应该继续请求或者如果已经完成则忽略
2xx成功 — 表示请求已经被成功接收,处理已完成
3xx重定向 — 重定向到其它地方,让客户端再发起一个请求以完成整个处理
4xx客户端错误 — 处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx服务器端错误 — 处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等

参考:
响应状态码.md

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

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

要知道浏览器端接收到响应数据后会自动解析数据,就如同这样显示在页面上
image.png
那么在这之前服务器端如何解析请求报文的?
要了解到服务器针对HTTP协议的解析机制
SpringBootWeb入门.md

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

Web服务器-Tomcat

了解Tomcat:

  1. 我们先不使用Tomcat访问一个本地html文件

image.png
可以看出路径是一个本地文件路径,而我们一般在浏览器中访问的页面路径并不是这样的

  1. 使用tomcat,访问html

image.png
1。将静态资源放入web服务器上
image.png
2。apache-tomcat-9.0.27–>bin–>startup.bat 启动服务器
因为windows默认使用GBK编码方式,所以我们先去配置文件中 修改,防止乱码;SpringBootWeb入门.md
image.png
最后访问:[http://localhost:8080/demo/index.html](http://localhost:8080/demo/index.html)即html资源的路径
image.png
注意此操作要提前将idea占用的8080端口关闭,因为tomcat默认占用8080端口

从上面两个操作可以看出tomcat是一个web服务器

其他具体操作:SpringBootWeb入门.md


入门程序解析:

关于web开发的基础知识,我们可以告一段落了。下面呢,我们在基于今天的核心技术点SpringBoot快速入门案例进行分析。

3.3.1 Spring官方骨架

之前我们创建的SpringBoot入门案例,是基于Spring官方提供的骨架实现的。
Spring官方骨架,可以理解为Spring官方为程序员提供一个搭建项目的模板。
image.png

我们可以通过访问:https://start.spring.io/ ,进入到官方骨架页面
具体生成操作见SpringBootWeb入门.md

结论:不论使用IDEA创建SpringBoot项目,还是直接在官方网站利用骨架生成SpringBoot项目,项目的结构和pom.xml文件中内容是相似的。

3.3.2 起步依赖

在我们之前讲解的SpringBoot快速入门案例中,同样也引用了:web依赖和test依赖
image.png
spring-boot-starter-web和spring-boot-starter-test,在SpringBoot中又称为:起步依赖

而在SpringBoot的项目中,有很多的起步依赖,他们有一个共同的特征:就是以spring-boot-starter-作为开头。在以后大家遇到spring-boot-starter-xxx这类的依赖,都为起步依赖。

起步依赖有什么特殊之处呢,这里我们以入门案例中引入的起步依赖做为讲解:

  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖

spring-boot-starter-web内部把关于Web开发所有的依赖都已经导入并且指定了版本,只需引入 spring-boot-starter-web 依赖就可以实现Web开发的需要的功能

Spring的官方提供了很多现成的starter(起步依赖),我们在开发相关应用时,只需要引入对应的starter即可。

官方地址:https://docs.spring.io/spring-boot/docs/2.7.2/reference/htmlsingle/#using.build-systems.starters
image.png
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每一个起步依赖,都用于开发一个特定的功能。

举例:当我们开发中需要使用redis数据库时,只需要在SpringBoot项目中,引入:spring-boot-starter-redis ,即可导入redis开发所需要的依赖。

3.3.2 SpringBoot父工程

在我们之前开发的SpringBoot入门案例中,我们通过maven引入的依赖,是没有指定具体的依赖版本号的。
image.png
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为什么没有指定版本号,可以正常使用呢?

  • 因为每一个SpringBoot工程,都有一个父工程。依赖的版本号,在父工程中统一管理。

image.png
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.3.3 内嵌Tomcat

问题:为什么我们之前书写的SpringBoot入门程序中,并没有把程序部署到Tomcat的webapps目录下,也可以运行呢?

原因呢,是因为在我们的SpringBoot中,引入了web运行环境(也就是引入spring-boot-starter-web起步依赖),其内部已经集成了内置的Tomcat服务器。

我们可以通过IDEA开发工具右侧的maven面板中,就可以看到当前工程引入的依赖。其中已经将Tomcat的相关依赖传递下来了,也就是说在SpringBoot中可以直接使用Tomcat服务器。
image.png

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成果、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值