springboot学习笔记(二)

1.Spring 和SpringBoot区别

2.Web开发入门

3.MVC模型

4.@RequestMapping用法

5.RESTful

1.Spring 和SpringBoot区别

参考:

大家都懂Spring和SpringBoot的区别吗? - 知乎

https://www.zhihu.com/question/598494506/answer/3018702101

在学习了Spring和初步了解了SpringBoot之后,我想讨论一下这俩者的区别,从我一个初学者的角度出发,看待这个问题。

a.Spring依赖XML配置文件,虽然也支持Java配置和注解,但是早期还是以XML配置为主。SpringBoot通过各种的注解,极大地缩减了或者说消除了XML配置文件

b.Springboot集成了许多依赖项,大大减少了项目的搭建和开发流程。提供的“starters” poms来简化 Maven 配置。

Maven依赖:

首先,让我们看一下使用Spring创建Web应用程序所需的最小依赖项

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.1.0.RELEASE</version> 
</dependency> 
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.0.RELEASE</version> 
</dependency>

与Spring不同,Spring Boot只需要一个依赖项来启动和运行Web应用程序:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.6.RELEASE</version> 
</dependency>

在 Spring 项目中,我们应该将Spring Test , JUnit , Hamcrest 和 Mockito添加为依赖项。但是在 Spring Boot中 ,我们只需要添加 spring-boot-starter-test 依赖项来自动包含这些库。 Spring Boot为不同的Spring模块提供了许多依赖项。一些最常用的是: spring-boot-starter-data-jpa spring-boot-starter-security spring-boot-starter-test spring-boot-starter-web spring-boot-starter-thymeleaf

2.Web开发入门

a.Spring Boot将传统Web开发的mvc、json、tomcat等框架整合,提供了spring-boot-starter-web组件,简化了Web应用配置。

b.创建SpringBoot项目勾选Spring Web选项后,会自动将spring-boot-starter-web组件加入到项目中。

c.spring-boot-starter-web启动器主要包括web、webmvc、json、tomcat等基础依赖组件,作用是提供Web开发场景所需的所有底层依赖。

d.webmvc为Web开发的基础框架,json为JSON数据解析组件,tomcat为自带的容器依赖。

3.MVC模型介绍

a.
Controller:控制器,接受用户的HTTP请求,向Model请求响应的数据,将请求得到的数据发送给视图View进行渲染。
View:视图,接受Controller控制器的返回的数据,对数据进行渲染,最终返回给用户网页页面。
Model:模型,接受Controller控制器的请求,并返回对应的数据。
b.
Controller连接View和Model,十分重要,在SpringBoot中,提供了@Controller和@RestController两种注解来标识此类负责接受和处理HTTP请求。如果请求的是页面和数据,使用@Controller注解,但是这样必须返回页面和数据,或说是前后端不分离,这与当前的前后端分离趋势不符合,所以现在大部分是使用@RestController。@RestController负责返回数据。
c.
@RestController 默认情况下,该注解会将返回的对象数据转换为JSON格式。
User代码:
 * Copyright 2013-2018 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      https://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package com.example.demo.demos.web;/*** @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>*/
public class User {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}

运行结果:返回结果是JSON格式

4.@RequestMapping用法

5.RESTful服务

RESTful是目前流行的互联网软件服务架构设计风格,它不是一个标准,更像一组客户端和服务端交互时的架构理念和设计原则,基于这种架构理念和设计原则的WEB API更加简洁,更有层次。

RESTful的特点:

a.每一个URL代表一种资源
b.客户端使用GET、POST、PUT、DELETE四种标识操作方式的动词对服务端资源进行操作:GET用于获取资源,POST用于新建资源(或更新资源),PUT用于更新资源,DELETE则表示删除资源。
c.通过操作资源的表现形式来实现服务端请求操作
d.资源的表现形式是JSON或HTML
e.客户端与服务端之间的交互请求之间是无状态的,从客户端到服务端的每个请求包含必须得信息。

符合RESTful的API特性:

a.安全性:安全的方法被期望不会产生任何副作用,当我们使用GET操作获取资源时候,不会引起资源本身的改变,也不会引起服务器状态的改变。
b.幂等性:幂等的方法保证了重复进行一个请求和一个请求的效果是相同的(并不是指响应总是相同的,而是指服务器上的资源的状态从第一次请求后就不再改变),在数学上的幂等性是指N次变换和一次变换是相同的。
HTTP Method:

在SpringBoot当中实现RESTful服务:

SpringBoot提供的spring-boot-starter-web组件完全支持开发RESTful API,提供了与REST操作方式相对应的注解。
@GetMapping:处理GET请求,获取资源
@PostMapping:处理POST请求,新建资源
@PutMapping:处理PUT请求,更新资源
@DeleteMapping:处理DELETE请求,删除资源
@PatchMapping:处理PATCH请求,用于部分更新资源
在RESTful架构中,每个网址代表了一种资源,所以URL中建议不要包含中词,只包含名词即可,而且所用的名词往往与数据库的表格名相对应。下图为用户管理API示例:
对应SpringBoot中RestController代码:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292135.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[toolschain] 头文件有下划线报错不好看,ubuntu下vscode如何设置包含目录路径,以及如何找到安装包的头文件

写在前面 本文是把之前的散落在不同blog中的记录&#xff0c;总结单独合成了一篇文章 vscode 如何配置文件路径 之前使用visual studio 感觉在这一点上 更方便&#xff0c;如果vscode 要配置一下 。 新建&#xff1a;c_cpp_properties.json 或者 ctrl shift p在设置中查找 c…

绝地求生:【违规处罚工作公示】12月11日-12月17日

12月11日至12月17日期间&#xff0c;共计对93,919个违规账号进行了封禁&#xff0c;其中83,785个账号因使用外挂被永久封禁。 若您游戏中遇到违规行为&#xff0c;建议您优先在游戏内进行举报&#xff1b; 另外您也可以在官方微信公众号【PUBG国际版】中点击“ 服务中心 - 举…

配置多一个路由器作为家庭wifi的无线热点?

以下内容为本人的著作&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/8OcDnY3O6ux41GntesHHcg 故事背景是这样的&#xff0c;周末在家躺平玩手机&#xff0c;离不开网络又想上厕所&#xff0c;但是家里只有一个无线路由器…

解决 elementPlus 组件内容显示为英文的问题

解决 elementPlus 组件内容显示为英文的问题 一、问题描述 刚开始用 ElementPlus 发现默认的组件内容都是英文的 二、解决办法 找了找&#xff0c;发现是国际化的问题&#xff0c;默认就是显示英文&#xff0c;如果要显示中文需要配置中文显示。 关于显示中文的官方说明&a…

检索稳定▉2024年能源、信息技术与科学应用国际会议(ICEITSA 2024)

检索稳定▉2024年能源、信息技术与科学应用国际会议&#xff08;ICEITSA 2024&#xff09; 2024 International Conference on Energy, Information Technology, and Scientific Applications 2024年能源、信息技术与科学应用国际会议&#xff08;ICEITSA 2024&#xff09;定于…

【藏经阁一起读】(80)__《2023龙蜥社区白皮书》

【藏经阁一起读】&#xff08;80&#xff09;__《2023龙蜥社区白皮书》 2023龙蜥社区白皮书 作者&#xff1a; 小龙 发布时间&#xff1a;2023-11-15 章节数&#xff1a;79 内容简介&#xff1a; 从解决CentOS停服的问题出发为广大用户的业务连续性提供了坚定的保障&#xf…

路径规划之RRT *算法

系列文章目录 路径规划之Dijkstra算法 路径规划之Best-First Search算法 路径规划之A *算法 路径规划之D *算法 路径规划之PRM算法 路径规划之RRT算法 路径规划之RRT *算法 路径规划之RRT*算法 系列文章目录前言一、RRT算法1.起源2.改进2.1 重新选择父节点2.2 重新布线 3.对比…

企业计算机中了DevicData勒索病毒如何解密,DevicData勒索病毒解密流程方案

在近期&#xff0c;网络上流传一种名为DevicData勒索病毒&#xff0c;该病毒是一种早期勒索病毒&#xff0c;随着网络技术的不断发展&#xff0c;该勒索病毒的攻击加密方式做了很大升级&#xff0c;给企业的计算机带来了严重威胁。近日&#xff0c;云天数据恢复中心陆续接到很多…

5分钟攻略Spring-Retry框架实现经典重试场景

前言 今天分享干货&#xff0c;控制了篇幅&#xff0c;5分钟内就能看完学会。 主题是Spring-Retry框架的应用&#xff0c;做了一个很清晰的案例&#xff0c;代码可下载自测。 框架介绍 Spring-Retry框架是Spring自带的功能&#xff0c;具备间隔重试、包含异常、排除异常、控…

八:爬虫-MySQL基础

一&#xff1a;MySQL数据库基础 1.MySQL数据库介绍 MySQL是一个[关系型数据库管理系统]&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Rela…

物业服务投诉反馈建议建议二维码

为高效处理物业方面的投诉问题&#xff0c;进一步提升居住品质。凡尔码平台推出“二维码”便民投诉、反馈方式&#xff0c;如有群租扰民、占用堵塞消防通道或私拉乱建等问题&#xff0c;可以立即扫码或进入“凡尔码”小程序进行投诉或反馈。 如电梯出现故障物业服务企业未及时维…

【机器学习实战】基于python对泰坦尼克幸存者进行数据分析与预测

&#x1f4da;引言 &#x1f64b;‍♂️作者简介&#xff1a;生鱼同学&#xff0c;大数据科学与技术专业硕士在读&#x1f468;‍&#x1f393;&#xff0c;曾获得华为杯数学建模国家二等奖&#x1f3c6;&#xff0c;MathorCup 数学建模竞赛国家二等奖&#x1f3c5;&#xff0c…