SpringBoot入门

创建SpringBoot工程

基于Spring官方骨架,创建SpringBoot工程

基本信息描述完毕之后,勾选web开发相关依赖。

点击Finish之后,就会联网创建这个SpringBoot工程,创建好之后,结构如下:

  • ==注意:在联网创建过程中,会下载相关资源(请耐心等待)==

1.2.2 定义请求处理类

在com.itheima这个包下创建一个子包controller

然后在controller包下新建一个类:HelloController

@RestController
public class HelloController {
​
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("Hello World ~");
        return "Hello World ~";
    }
    
}  
  

1.2.3 运行测试

运行SpringBoot自动生成的引导类

打开浏览器,输入 http://localhost:8080/hello

1.3 Web分析

浏览器:

  • 输入网址:http://192.168.100.11:8080/hello

    • 通过IP地址192.168.100.11定位到网络上的一台计算机

      我们之前在浏览器中输入的localhost,就是127.0.0.1(本机)

    • 通过端口号8080找到计算机上运行的程序

      localhost:8080 , 意思是在本地计算机中找到正在运行的8080端口的程序

    • /hello是请求资源位置

      • 资源:对计算机而言资源就是数据

        • web资源:通过网络可以访问到的资源(通常是指存放在服务器上的数据)

      localhost:8080/hello ,意思是向本地计算机中的8080端口程序,获取资源位置是/hello的数据

      • 8080端口程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:(可以理解为ServerSocket)

  • 接收到浏览器发送的信息(如:/hello)

  • 在服务器上找到/hello的资源

  • 把资源发送给浏览器

HTTP-请求协议

浏览器和服务器是按照HTTP协议进行数据通信的。

HTTP协议又分为:请求协议和响应协议

  • 请求协议:浏览器将数据以请求格式发送到服务器

    • 包括:请求行请求头请求体

  • 响应协议:服务器将数据以响应格式返回给浏览器

    • 包括:响应行响应头响应体

在HTTP1.1版本中,浏览器访问服务器的几种方式:

请求方式请求说明
GET获取资源。 向特定的资源发出请求。例:itheima_百度搜索
POST传输实体主体。 向指定资源提交数据进行处理请求(例:上传文件),数据被包含在请求体中。
OPTIONS返回服务器针对特定资源所支持的HTTP请求方式。 因为并不是所有的服务器都支持规定的方法,为了安全有些服务器可能会禁止掉一些方法,例如:DELETE、PUT等。那么OPTIONS就是用来询问服务器支持的方法。
HEAD获得报文首部。 HEAD方法类似GET方法,但是不同的是HEAD方法不要求返回数据。通常用于确认URI的有效性及资源更新时间等。
PUT传输文件。 PUT方法用来传输文件。类似FTP协议,文件内容包含在请求报文的实体中,然后请求保存到URL指定的服务器位置。
DELETE删除文件。 请求服务器删除Request-URI所标识的资源
TRACE追踪路径。 回显服务器收到的请求,主要用于测试或诊断
CONNECT要求用隧道协议连接代理。 HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

在我们实际应用中常用的也就是 :GET、POST

GET方式的请求协议:

GET方式的请求是HTTP协议中定义的一种标准请求方法,用于从服务器获取信息。以下是一些关于GET请求方式的详细信息:

  1. 请求方式:GET是HTTP协议定义的多种请求方法之一,主要用于向指定的资源请求数据。
  2. 参数传递:在发送GET请求时,可以通过URL携带参数。这些参数通常放置在URL之后,通过?开始,各个参数之间使用&分隔,参数名与参数值用=连接。例如:/mail/1.html?name=abc&password=xyz。这种格式被称为查询字符串。
  3. 应用场景:适用于那些不会对服务器资源产生副作用的请求,比如查询操作、搜索操作或读取操作。GET请求适合用于收集数据的场景,特别是当HTML表单内的输入字段名称的总长不超过一定字符限制(如1024个字符)时。
  4. 安全性和效率:由于GET请求的参数直接暴露在URL中,所以它不如POST请求安全。此外,由于浏览器和Web服务器对URL长度有限制,因此GET请求能够携带的数据量有限。
  5. 兼容性:GET请求可以由超链接、表单(未指定method或指定为get)、在浏览器地址栏直接输入地址以及某些Ajax调用等多种方式发起。
  6. 无状态性:HTTP是一个无状态协议,这意味着每次GET请求都是独立的,服务器不会保存任何来自客户端之前请求的信息。
  7. 缓存:由于GET请求通常用于获取信息且不应产生副作用,因此它们可以被浏览器缓存起来。这使得相同的请求可以快速地重复访问,提高了效率。
  8. 限制:虽然HTTP规范并未对URL的长度进行严格限制,但实际应用中,由于浏览器和服务器实现的限制,GET请求的大小通常被限制在某个阈值之下,这个阈值取决于具体的浏览器和服务器设置。

综上所述,GET方式的请求是HTTP协议中用于请求数据的标准方法,它通过将请求参数附加到URL上来工作,并且适用于无副作用的请求场景。在选择使用GET或POST等其他HTTP请求方法时,开发者应考虑请求的性质、安全性需求以及数据大小等因素。

POST方式的请求协议:  

POST请求用于向服务器提交数据,通常导致服务器状态变化。以下是POST请求的一些详细特点:

  1. 数据提交:POST请求通常用于向服务器提交数据,如在Web表单中填写用户信息并提交时,就是使用POST请求将表单数据发送到服务器。
  2. 请求体:与GET请求将数据附在URL中不同,POST请求的数据包含在请求体中,这使得POST可以提交比GET更大的数据量,并且更加安全。
  3. 安全性:由于POST请求的数据不在URL中显示,相对于GET请求来说,POST请求在传输敏感信息时更安全。
  4. 无限制:理论上,POST请求提交的数据大小是没有限制的,尽管实际中可能受到服务器配置的限制。
  5. 应用场景:适用于需要向服务器上传大量数据的情况,如文件上传、用户注册等操作。
  6. 缓存:POST请求一般不会被浏览器缓存,因为它通常会引起服务器上的一些变化。
  7. 处理方式:服务器端通常会对POST请求进行处理,例如存储数据到数据库,或者执行其他一些会改变服务器状态的操作。

综上所述,POST请求是HTTP协议中用于提交数据到服务器的一种请求方法,它主要用于那些需要改变服务器状态的场景,并且可以传输大量的数据,同时具有较高的安全性。在实际开发中,根据具体的应用需求选择合适的请求方法是非常重要的。

HTTP-响应协议

HTTP响应是服务器对客户端请求的回复,遵循一定的格式和规则

HTTP响应的结构通常包括以下几个部分:

  1. 响应行:响应行包含协议/版本、状态码以及状态码描述。例如,HTTP/1.1 200 OK表示使用HTTP协议版本1.1,状态码为200,状态描述为OK,意味着请求已成功处理。
  2. 响应头:响应头包含了服务器返回给客户端的附加信息,如Content-Type(内容类型)、Content-Length(内容长度)等,这些信息为客户端提供了如何解释响应体的指导。
  3. 响应空行:在响应头之后,会有一个空行,用以分隔响应头和响应体。
  4. 响应体:响应体包含实际返回给客户端的数据,这可能是HTML文档、图片或其他类型的文件内容。
状态码分类说明
1xx响应中 --- 临时状态码。表示请求已经接受,告诉客户端应该继续请求或者如果已经完成则忽略
2xx成功 --- 表示请求已经被成功接收,处理已完成
3xx重定向 --- 重定向到其它地方,让客户端再发起一个请求以完成整个处理
4xx客户端错误 --- 处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx服务器端错误 --- 处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等

Spring官方骨架

Spring官方骨架,可以理解为Spring官方为程序员提供一个搭建项目的模板。

我们可以通过访问:https://start.spring.io/ ,进入到官方骨架页面

Spring官方生成的SpringBoot项目,怎么使用呢?

 

  • 解压缩后,就会得到一个SpringBoot项目工程

打开pom.xml文件,我们可以看到springboot项目中引入了web依赖和test依赖

起步依赖


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

官方地址:Spring Boot Reference Documentation

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

内嵌Tomcat

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

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

当我们运行SpringBoot的引导类时(运行main方法),就会看到命令行输出的日志,其中占用8080端口的就是Tomcat。  

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值