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代码:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

现代化智慧档案馆八防十防建设调研样本

以下是一份完整的解决方案&#xff0c;包括方案介绍、方案优势、实施方案、预算和清单、实施时间和进度计划以及可能遇到的难点和解决方案。 方案介绍 档案库房八防十防环境一体化监控系统旨在为档案库房提供全方位的环境监控和管理&#xff0c;保障档案的安全、稳定和可靠。该…

CSS新手入门笔记整理:CSS3边框样式

圆角效果&#xff1a;border-radius 语法 元素{border-radius:取值;} border-radius 属性取值是一个长度值&#xff0c;单位可以是 px、em 和百分比等。 border-radius的四个取值 /*设置 1 个值,表示 4 个角的圆角半径都是 10px*/ border-radius:10px; /*设置 2 个值,表示…

mfc配置halcon环境

新建mfc窗体 选择基于对话框 打开项目属性 1、附加包含目录添加&#xff1a; $(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp 2、链接器->常规->附加库目录 $(HALCONROOT)\lib\x64-win64 3、链接器->输入->附加依赖项 halcon.lib;halconcpp.lib 在对话…

山西电力市场日前价格预测【2023-12-20】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-12-20&#xff09;山西电力市场全天平均日前电价为473.70元/MWh。其中&#xff0c;最高日前电价为1292.75元/MWh&#xff0c;预计出现在08:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

【ARM Trace32(劳特巴赫) 高级篇 21 -- Trace 系统性能分析 Performance Analyzer】

请阅读【Trace32 ARM 专栏导读】 文章目录 Performance AnalyzerPerf 操作步骤采样对象PC采样对象Memory采样对象 TaskPerformance Analyzer sample-based profiling 通常也叫做Trace32 的性能分析(Perf), 这个功能是通过周期性的采样来实现的。被采样到的数据可以被用于统计…

2023-12-18 最大二叉树、合并二叉树、二叉搜索树中的搜索、验证二叉搜索树

654. 最大二叉树 核心&#xff1a;记住递归三部曲&#xff0c;一般传入的参数的都是题目给好的了&#xff01;把构造树类似于前序遍历一样就可&#xff01;就是注意单层递归的逻辑&#xff01; # Definition for a binary tree node. # class TreeNode: # def __init__(se…

基于ssm高校宿舍管理系统的设计与开发论文

摘 要 本文是对高校宿舍管理系统的概括总结&#xff0c;主要从开题背景&#xff0c;课题意义&#xff0c;研究内容&#xff0c;开发环境与技术&#xff0c;系统分析&#xff0c;系统设计&#xff0c;系统实现这几个角度来进行本高校宿舍管理系统的阐述。 高校宿舍管理系统运用…

基于深度学习的图像去雾系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义&#xff1a; 随着计算机视觉和图像处理技术的不断发展&#xff0c;图像去雾成为了一个备受关注的研究领域。在自然环境中&#xff0c;由于大气中的颗粒物和水汽的…

vs code 如何配置配置自动编译将TypeScript代码编译成为JavaScript代码看这一篇就够了!!!

TS代码自动编译为JS代码 1. 检查是否有node环境2. 执行 tsc命令3. 监控编译 总结 本文介绍了vs code如何配置自动编译&#xff0c;将TypeScript代码编译成为JavaScript代码。 1. 检查是否有node环境 检查系统是否有node环境&#xff0c;命令如下 node -v npm -v如果没有安装…

ControlNet Adding Conditional Control to Text-to-Image Diffusion Models

ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models TL; DR&#xff1a;ControlNet 使得我们能通过输入额外的条件图&#xff08;如 Canny 边缘、人体姿态、深度图等&#xff09;&#xff0c;对 SD 生成结果的空间位置有更准确的控制。它拷贝 SD 部分…

DiffUtil + RecyclerView 在 Kotlin中的使用

很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。 文章目录 1 DiffUtil 用来解决什么问题?2 DiffUtil 是什么?3 DiffUtil的使用4 参考文章 1 DiffUtil 用来解决什么问题? 先举几个实际开发中的例子帮助我们感受下: 加载内容流时,第一次加载了ABC,…

idea添加外部jar包

在日常开发中在lib包的里面添加了外部的jar&#xff0c;如何将外部的包添加到java类库中&#xff0c;这样项目就可以引用相应的jar包&#xff0c;操作如下&#xff1a; 1.先将需要的jar复制到lib包如下&#xff0c;如下截图&#xff0c;图标前面没有箭头&#xff0c;表示还未添…

2024年【北京市安全员-B证】考试报名及北京市安全员-B证考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 北京市安全员-B证考试报名参考答案及北京市安全员-B证考试试题解析是安全生产模拟考试一点通题库老师及北京市安全员-B证操作证已考过的学员汇总&#xff0c;相对有效帮助北京市安全员-B证考试技巧学员顺利通过考试。…

sqlserver-事物日志

文章目录 前言事务日志逻辑体系结构事务日志物理体系结构虚拟日志文件 (VLF)事务日志的循环性质日志截断事务日志备份事务日志支持的操作恢复个别的事务。启动事务时恢复所有未完成SQL Server事务。将还原的数据库、文件、文件组或页前滚至故障点。支持事务复制。支持高可用性和…

利用gradio快速搭建AI应用

引言 Gradio 是一个用于快速创建交互式界面的Python库&#xff0c;这些界面可以用于演示和测试机器学习模型。使用Gradio&#xff0c;开发者可以非常轻松地为他们的模型构建一个前端界面&#xff0c;而不需要任何Web开发经验。 与类似产品的对比 TensorBoard&#xff1a;主…

Java-04方法

1、什么是方法 设计方法的原则&#xff1a;方法的本意是功能块&#xff0c;就是实现某个功能的语句块的集合。我们设计方法的时候&#xff0c;最好保持方法的原子性&#xff0c;就是一个方法只完成一个功能&#xff0c;这样有利于我们后期的扩展。 2、方法的定义 修饰符 返回…

用23种设计模式打造一个cocos creator的游戏框架----(二十)解析器模式

1、模式标准 模式名称&#xff1a;解析器模式 模式分类&#xff1a;行为型 模式意图&#xff1a;给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该表示来解释语言中的句子。 结构图&#xff1a; 适用于&#xff1…

interface接口(学习推荐版)

接口组成部分 示例代码&#xff1a; 1.默认会在类型前面添加public staic final修饰变量&#xff0c;所以可省略 2.默认在方法前面添加public abstract修饰&#xff0c;但没有staic和final修饰 注意事项&#xff1a; 1、用staic final的变量就是常量 2、接口只能由成员变量&a…

Day03

13.约束constraint 13.1 概述 13.1.1 背景 数据完整性&#xff08;Data Integrity)是指数据的精确性&#xff08;Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完…

众和策略:如何稳健投资股票?

怎么稳健出资股票&#xff1f;下降股票亏本概率的办法&#xff01; 1、长时间坚持 股票商场的动摇是非常大的&#xff0c;特别是短期内呈现的改变&#xff0c;假如不是短线出资者的话&#xff0c;那么建议长时间出资较为稳健&#xff0c;长时间出资能够协助出资者躲避商场动摇…