Spring和SpringBoot

Spring

Spring 是一个广泛应用于 Java 企业级开发的开源框架。
它具有以下重要特点和优势:

轻量级和非侵入式

对代码的侵入性较小,开发者可以在遵循 Spring 规范的基础上,灵活运用其功能。

控制反转(IoC)和依赖注入(DI)

帮助管理对象之间的依赖关系,降低模块之间的耦合度,提高代码的可维护性和可测试性。

面向切面编程(AOP)

能够将横切关注点(如日志记录、事务管理、权限控制等)从业务逻辑中分离出来,提高代码的模块化和可复用性。

支持声明式事务

简化了事务的管理和配置。

丰富的模块

包括 Spring MVC 用于 Web 开发、Spring Data 用于数据访问、Spring Security 用于安全管理等,提供了全面的企业级解决方案。

社区活跃和生态丰富

拥有庞大的社区支持,有大量的开源项目和扩展可供选择。
Spring 框架极大地提高了 Java 开发的效率和质量,使得开发者能够更专注于业务逻辑的实现。



SpringBoot

快速配置Spring应用程序,简化Spring的开发流程

SpringBootWeb入门

在这里插入图片描述
记得选择Maven进行项目构建。因为之前给Maven配置了Ali云的源所以下载起来会略快

请求控制类

在 Web 开发中,“请求控制类” 通常指的是用于处理 HTTP 请求的控制器类。
这类控制器类一般具有以下特点和功能:

接收请求

能够获取客户端发送的 HTTP 请求,包括请求方法(GET、POST、PUT、DELETE 等)、请求路径、请求参数等。

调用业务逻辑

根据请求的内容,调用相应的业务逻辑处理方法或服务,以完成具体的业务操作。

数据处理与封装

对从业务逻辑获取到的数据进行处理和封装,使其符合响应的要求。

响应生成

决定返回给客户端的响应状态码(如 200 表示成功、404 表示未找到等)、响应头信息以及响应体数据。
在不同的 Web 框架中,请求控制类的实现方式可能会有所不同。例如,在 Spring MVC 框架中,通常使用 @Controller 或 @RestController 注解来标识一个类为控制器类,并通过注解方法来处理不同的请求路径和请求方法。

下列代码为请求控制类函数接收到/hello请求后打印HelloController的函数

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

在浏览器中访问 http:localhost:8080/hello
在这里插入图片描述



Http协议

在这里插入图片描述
在这里插入图片描述

http请求的格式:

请求行

包含请求方法(如 GET、POST、PUT、DELETE 等)、请求的 URL 路径以及 HTTP 协议版本,各部分之间用空格分隔。例如:GET /index.html HTTP/1.1

请求头

由一系列的键值对组成,每行一个,键和值之间用冒号和空格分隔。常见的请求头有 User-Agent(客户端信息)、Host(目标主机)、Content-Type(请求体的数据类型)、Content-Length(请求体的长度)等。

空行

用于分隔请求头和请求体。

请求体

并非所有的请求都有请求体,只有在 POST、PUT 等需要向服务器发送数据的请求方法中才会包含。请求体中的数据格式由 Content-Type 请求头指定。

GET /example?param1=value1&param2=value2 HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1

在这个示例中,没有请求体。如果是 POST 请求并带有数据,例如表单数据或 JSON 数据,会在空行之后添加相应的请求体内容。

get和post请求的区别

GET 和 POST 请求主要有以下区别:

数据传递方式

GET 请求将数据作为 URL 的一部分进行传递,数据以查询字符串的形式附加在 URL 后面,例如:http://example.com/page?param1=value1&param2=value2。
POST 请求将数据放在请求体中进行传递。即get请求没有请求体

数据长度限制

GET 请求的 URL 长度通常有限制,不同的浏览器和服务器可能有所不同。
POST 请求对数据长度没有限制,理论上可以传输更大量的数据。

安全性

GET 请求的数据在 URL 中可见,不太安全,不适合传输敏感信息。
POST 请求的数据在请求体中,相对更安全。

用途

GET 请求常用于获取数据,不应用于修改数据(如数据库更新),因为它的本质是幂等的(多次相同的请求产生相同的结果)。
POST 请求通常用于提交表单数据、上传文件等,可能会对服务器数据产生修改。

缓存

GET 请求的结果可以被浏览器缓存。
POST 请求的结果通常不会被缓存。
综上所述,GET 和 POST 请求在数据传递、安全性、用途等方面存在差异,应根据具体的业务需求选择合适的请求方式。



Http响应的格式:

状态行

包含 HTTP 协议版本、状态码和状态描述,各部分之间用空格分隔。例如:HTTP/1.1 200 OK ,其中 200 是状态码,OK 是对状态码的描述。

响应头

由一系列的键值对组成,每行一个,键和值之间用冒号和空格分隔。常见的响应头有 Content-Type(响应体的数据类型)、Content-Length(响应体的长度)、Server(服务器信息)、Set-Cookie(设置 Cookie)等。

空行

用于分隔响应头和响应体。

响应体

服务器返回给客户端的实际数据,其内容和格式由响应头中的 Content-Type 字段指定。

HTTP/1.1 200 OK  状态行
Content-Type: text/html; charset=UTF-8
Content-Length: 120 响应头
空行
<html> 响应体	
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

常见状态码及其含义

1xx 信息性状态码

100 Continue:服务器收到了部分请求,客户端应继续发送其余部分。
101 Switching Protocols:服务器切换协议,如从 HTTP 切换到 WebSocket。

2xx 成功状态码

200 OK:请求成功,服务器成功返回了请求的数据。
201 Created:请求成功并且服务器创建了新的资源。
202 Accepted:服务器已接受请求,但尚未处理完成。
204 No Content:服务器成功处理了请求,但没有返回任何内容。

3xx 重定向状态码

301 Moved Permanently:请求的资源已被永久移动到新的 URL,浏览器会自动重定向到新 URL。
302 Found:请求的资源临时被移动,浏览器会重定向到临时的 URL。
304 Not Modified:客户端的缓存资源仍然有效,服务器未返回新内容。

4xx 客户端错误状态码

400 Bad Request:客户端发送的请求存在语法错误,服务器无法理解。
401 Unauthorized:请求需要用户认证,但未提供有效的认证信息。
403 Forbidden:服务器理解请求,但拒绝执行,通常是因为权限不足。
404 Not Found:服务器未找到请求的资源。

5xx 服务器错误状态码

500 Internal Server Error:服务器内部发生错误,无法完成请求。
502 Bad Gateway:作为网关或代理的服务器,从上游服务器接收到无效的响应。
503 Service Unavailable:服务器暂时不可用,通常是由于过载或维护。
504 Gateway Timeout:网关或代理服务器在等待上游服务器响应时超时。
这只是一些常见的状态码,HTTP 协议定义了更多的状态码以涵盖各种可能的情况。
具体状态码含义由开发人员自己定义,但是一般默认遵守以上的规则

一些常见响应头

在这里插入图片描述

TomCat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实际上springboot已经内嵌了tomcat,所以可以直接从main方法对网页资源进行访问
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值