创建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请求方式的详细信息:
- 请求方式:GET是HTTP协议定义的多种请求方法之一,主要用于向指定的资源请求数据。
- 参数传递:在发送GET请求时,可以通过URL携带参数。这些参数通常放置在URL之后,通过
?
开始,各个参数之间使用&
分隔,参数名与参数值用=
连接。例如:/mail/1.html?name=abc&password=xyz
。这种格式被称为查询字符串。 - 应用场景:适用于那些不会对服务器资源产生副作用的请求,比如查询操作、搜索操作或读取操作。GET请求适合用于收集数据的场景,特别是当HTML表单内的输入字段名称的总长不超过一定字符限制(如1024个字符)时。
- 安全性和效率:由于GET请求的参数直接暴露在URL中,所以它不如POST请求安全。此外,由于浏览器和Web服务器对URL长度有限制,因此GET请求能够携带的数据量有限。
- 兼容性:GET请求可以由超链接、表单(未指定method或指定为get)、在浏览器地址栏直接输入地址以及某些Ajax调用等多种方式发起。
- 无状态性:HTTP是一个无状态协议,这意味着每次GET请求都是独立的,服务器不会保存任何来自客户端之前请求的信息。
- 缓存:由于GET请求通常用于获取信息且不应产生副作用,因此它们可以被浏览器缓存起来。这使得相同的请求可以快速地重复访问,提高了效率。
- 限制:虽然HTTP规范并未对URL的长度进行严格限制,但实际应用中,由于浏览器和服务器实现的限制,GET请求的大小通常被限制在某个阈值之下,这个阈值取决于具体的浏览器和服务器设置。
综上所述,GET方式的请求是HTTP协议中用于请求数据的标准方法,它通过将请求参数附加到URL上来工作,并且适用于无副作用的请求场景。在选择使用GET或POST等其他HTTP请求方法时,开发者应考虑请求的性质、安全性需求以及数据大小等因素。
POST方式的请求协议:
POST请求用于向服务器提交数据,通常导致服务器状态变化。以下是POST请求的一些详细特点:
- 数据提交:POST请求通常用于向服务器提交数据,如在Web表单中填写用户信息并提交时,就是使用POST请求将表单数据发送到服务器。
- 请求体:与GET请求将数据附在URL中不同,POST请求的数据包含在请求体中,这使得POST可以提交比GET更大的数据量,并且更加安全。
- 安全性:由于POST请求的数据不在URL中显示,相对于GET请求来说,POST请求在传输敏感信息时更安全。
- 无限制:理论上,POST请求提交的数据大小是没有限制的,尽管实际中可能受到服务器配置的限制。
- 应用场景:适用于需要向服务器上传大量数据的情况,如文件上传、用户注册等操作。
- 缓存:POST请求一般不会被浏览器缓存,因为它通常会引起服务器上的一些变化。
- 处理方式:服务器端通常会对POST请求进行处理,例如存储数据到数据库,或者执行其他一些会改变服务器状态的操作。
综上所述,POST请求是HTTP协议中用于提交数据到服务器的一种请求方法,它主要用于那些需要改变服务器状态的场景,并且可以传输大量的数据,同时具有较高的安全性。在实际开发中,根据具体的应用需求选择合适的请求方法是非常重要的。
HTTP-响应协议
HTTP响应是服务器对客户端请求的回复,遵循一定的格式和规则。
HTTP响应的结构通常包括以下几个部分:
- 响应行:响应行包含协议/版本、状态码以及状态码描述。例如,
HTTP/1.1 200 OK
表示使用HTTP协议版本1.1,状态码为200,状态描述为OK,意味着请求已成功处理。 - 响应头:响应头包含了服务器返回给客户端的附加信息,如
Content-Type
(内容类型)、Content-Length
(内容长度)等,这些信息为客户端提供了如何解释响应体的指导。 - 响应空行:在响应头之后,会有一个空行,用以分隔响应头和响应体。
- 响应体:响应体包含实际返回给客户端的数据,这可能是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。