SpringBoot快速入门-上

Apache Tomcat

Apache Tomcat是一个开源的Servlet 或 web容器,它实现了Java Servlet、JavaServer Pages (JSP)、Java Unified Expression Language (JUEL) 和 Java WebSocket 规范。

使用

  • 官网下载

  • 安装:绿色版 , 直接解压

  • 卸载:直接删除目录

  • 改编码:

    # conf/logging.properties
    java.util.logging.ConsoleHandler.encoding = UTF 8
    #改为
    java.util.logging.ConsoleHandler.encoding = GBK

  • 改端口

    • <!-- conf/server.xml -->
      <Connector port:"8080"  ....> </Connector>

  • 运行: bin\startup.bat;

  • 将web网页,部署在 webapps 文件夹下

  • 关闭:

    • 直接 x 掉运行窗口:强制关闭

    • bin\shutdown.bat:正常关闭

    • Cltrl+ c :正常关闭

springBoot

  • 内嵌Tomcat服务器

  • 起步依赖(也称为“启动器依赖”或“Starters”)

    • 指:特殊的依赖抽象,旨在简化Maven或Gradle项目的依赖管理。起步依赖本质上是一组预定义的依赖项集合,它们通常包括了构建特定类型的Spring应用程序所需的核心库。

    • spring-boot-starter:基础起步依赖,包含Spring Boot的核心库。

    • spring-boot-starter-web:用于构建Web应用程序。

    • spring-boot-starter-data-jpa:用于添加JPA(Java Persistence API)支持。

    • spring-boot-starter-security:用于添加Spring Security支持。

Spring Boot 的主要特点和优势包括:

  1. 自动配置:Spring Boot 试图根据添加到项目中的 jar 依赖自动配置 Spring 应用程序。例如,如果类路径上有 Spring JDBC,它会自动配置一个 DataSource。

  2. 独立运行:Spring Boot 应用程序可以打包成一个独立的 JAR 包,包含所有的依赖项,从而可以轻松地运行和部署。这意味着不需要外部的应用服务器,应用程序可以通过运行 java -jar 命令启动。

  3. 内置的运行时选择:Spring Boot 包含了嵌入式的 Tomcat、Jetty 或 Undertow,开发者可以选择其中之一作为 Web 服务器。

  4. 生产就绪特性:提供了一系列监控和管理生产环境的特性,如指标、健康检查和外部化配置。

  5. 无代码生成和 XML 配置:不需要代码生成,也不需要 XML 配置文件,尽可能地利用约定和注解来配置应用程序。

  6. 简化依赖管理:通过提供 starter 依赖项,Spring Boot 简化了构建配置。例如,要开始一个 Spring Web MVC 应用程序,只需添加 spring-boot-starter-web 依赖。

  7. 微服务支持:Spring Boot 与 Spring Cloud 配合使用,可以方便地构建微服务架构的应用程序。

创建sprinBootWeb项目

不需要

解析pom.xml

不懂Maven可以看我之前的快速入门http://t.csdnimg.cn/B5jYA

<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是XML文件的声明,指定了使用的版本和字符编码 --><project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 项目根元素,包含了项目的所有配置信息 --><modelVersion>4.0.0</modelVersion><!-- 指定了POM遵循的模型版本,这是Maven理解项目结构的方式 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.0</version><relativePath/> <!-- 这里通常用于相对查找父POM,但这里留空表示从仓库中获取 --></parent><!-- 指定了父POM,Spring Boot的父POM提供了许多默认配置,简化了项目配置 --><groupId>com.example</groupId><!-- 定义了项目组的ID,通常是公司或组织的域逆序,加上项目的路径 --><artifactId>SpringWeb5</artifactId><!-- 定义了项目的ID,用于唯一标识项目 --><version>0.0.1-SNAPSHOT</version><!-- 定义了项目的版本号,SNAPSHOT表示这是一个开发中的版本,不是正式发布的版本 --><name>SpringWeb5</name><!-- 定义了项目的名称,用于在IDE或构建工具中显示 --><description>SpringWeb5</description><!-- 定义了项目的描述,可以是项目的简短介绍 --><properties><java.version>17</java.version></properties><!-- 定义了项目属性,这里指定了Java的版本 --><dependencies><!-- 定义了项目依赖的库,Maven会自动下载并管理这些依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 添加了Spring Boot Web Starter依赖,它包含了构建RESTful Web服务所需的Spring组件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 添加了Spring Boot Test Starter依赖,它包含了用于测试的Spring组件,scope指定了依赖仅在测试阶段有效 --></dependencies><build><plugins><!-- 定义了构建过程中使用的插件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- Spring Boot Maven插件,提供了创建可执行jar和war文件的功能,以及其他Spring Boot特定的Maven任务 --></plugins></build>
</project>

两个重要类

自己找找

启动类

  • 由javaBoot 的构建系统创建

//启动类
@SpringBootApplication
public class SpringWeb5Application {public static void main(String[] args) {SpringApplication.run(SpringWeb5Application.class, args);}}

请求处理类

  • 用户创建 :为类加上类注解(@RestController), 为每个方法加上注解(@RequestMapping("/test"))

  • 自己创建的找不到

    //请求处理类
    @RestController
    public class TestController {//请求处理方法@RequestMapping("/test")public String test(){return "Hello Spring Boot! old version!";}//带路径参数的请求方法@RequestMapping("/test/{id}")public String test(){return "Hello Spring Boot! old version!";}
    }

Javaboot@注解

不做详细解释

@RequestParam

属性描述默认值
value指定要绑定的请求参数的名字。通常省略此属性,直接使用注解时的参数名作为value的值。(无默认值)
name这是value属性的别名,用于指定请求参数的名称。(无默认值)
defaultValue当请求中未提供参数时,指定参数的默认值。""
required指定参数是否必须存在于请求中。如果设为false,并且请求中没有此参数,那么将使用defaultValue或将其视为nulltrue
type指定转换器的类型,用于将请求参数转换为目标类型。在Spring 5之后,这可以通过@Qualifier注解实现。(无默认值)

请求HttpServietRequest

工具Postman

默认推荐Apifox

一款强大的模拟网页请求的工具包括但不限于

  • HTTP请求: Postman允许你构建和发送各种类型的HTTP请求,包括GET, POST, PUT, DELETE等,并可以添加各种请求头(headers)、查询参数(query parameters)、请求体(request body)和认证信息(authentication)。

  • 响应查看: 可以查看和分析API的响应,包括状态码、响应头和响应体,甚至可以预览JSON或XML格式的数据。

  • 环境变量: 可以设置和管理环境变量,这有助于在不同的环境中(如开发、测试、生产)切换API配置。

  • 集合(Collections): 这个特性允许你组织相关的请求到集合中,便于管理和共享API测试流程。

  • 自动化测试: 支持编写测试脚本,自动运行测试用例,并生成详细的测试报告。

  • 监控与集成: 可以设置监控定期检查API的健康状况,并通过Webhooks与其他工具集成。

  • 文档生成: Postman可以自动生成API文档,帮助团队成员理解API的功能和用法。

  • 协作: 支持团队协作,可以分享集合、环境和文档,促进团队间的沟通和合作。

  • Postman API: 提供了自身的API,允许开发者通过代码来控制和扩展Postman的功能。

  • 桌面应用与浏览器插件: Postman不仅有桌面应用版本,也有作为Chrome和Firefox浏览器插件的形式。

(以下使用)工具Apifox

更强跟适合团队开发

  • 一体化平台

    • Apifox 将 API 文档、API 测试、API Mock 服务和 API 自动化测试等功能整合在一个平台上,这意味着你可以在一个地方完成所有与 API 相关的工作,而不需要在多个工具之间切换。

  • 文档管理

    • Apifox 的文档功能遵循 OpenAPI 3.0 规范,提供了高效的可视化文档管理,使得创建和维护 API 文档更加直观和方便。

  • 数据同步

    • 使用 Apifox,你只需要定义一次 API 文档,就可以在测试、调试、模拟和自动化测试中重复使用,避免了数据在多个系统间同步的问题。

  • 测试效率

    • Apifox 在测试方面提供了高效的功能,例如环境变量管理、前置/后置脚本、全局共享 Cookie/Session 等,这些功能与 Postman 类似但声称使用起来更高效。

  • 脚本兼容性与灵活性

    • Apifox 的自定义脚本支持多种编程语言,包括 JavaScript、Java、Python、PHP 等,这比仅支持 JavaScript 的 Postman 提供了更多的灵活性。

  • 导入导出

    • Apifox 支持多种格式的导入,包括 OpenAPI、yapi、RAP2 和 Postman,这使得从其他工具迁移数据变得更加容易。

简单参数

  • 方法形参名与请求参数,一 一对应,或者使用@requestParam完成映射

@RestController
public class TestController(){@RequestMapping("/test1")public String test1(String name,Integer age,@requestParam(addre = "addre") String address){System.out.println(name + ":" + age +"--" + address);return "ok";}
}

实体参数

  • 方法形参名与请求参数,一 一对应,或者使用@requestParam完成映射

@RestController
public class TestRestContorller{@RequstMaping("/test1")public String test1(user val){System.out.println(val);}
}//其他文件
public class user{String name;Integer age;String  addre;//web的请求参数名和实体类属性无关,只和set/get的有关void setTest(String ab){this.name =  ab;//那么 web 请求时带的参数必须是 Test=abc 或 test=abc;}@Overridepublic String toString() {return "user{" +"name='" + name + '\'' +", age=" + age +", addre='" + addre + '\'' +'}';}
}

数组集合参数

  • 请求参数名和数组名相同,且参数名重复多个,定义数组或 @RequestParam + 其他

@RestController
public class TestRestContorller{@RequestMapping("/test3")public String test3(String []form){System.out.println(form[0] + "--" + form[1]);return "ok_test3";}@RequestMapping("/test4")public String test_3(@RequestParam List<String> form){System.out.println(form.get(0) + "--" + form.get(1));return "ok_test_3";}}

日期参数

  • 使用 @DateTimeFormat 注解完成日期

@RestController
public class  TestController{@RequestMapping("/test5")public String test5(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDateTime time){System.out.println(time);return "ok_test5";}
}
// HH 是24小时制 hh是12小时制

Json参数

  • JSON数据键名与形参对象属性名(其实只要set相同就可以了)相同,定义POJO(Plain Old Java Object)普通的Java对象需要使用@RequestBody标识

@RestController
public class TestController{@RequestMapping("/test6")public String test6(@RequestBody _User val) {System.out.println(val);return "ok_test6";}
}//其他文件
class User{String name;String age;Addres addre;//所有set/get方法......
}
class Addres{String province;String city;//所有set/get方法......
}

路径参数

  • 通过请求URL直接传输参数使用{...}来标识路径参数,需要**@PathVariable获取参数路径.

@RestController
public class TestController{@RequestMapping("/test7/{id}/{name}")public String test7(@PathVariable Integer id,@PathVariable String name){System.out.println("id =" + id  + " name =" + name);return "ok_test7";}}

总结

参数类型描述绑定方式适用场景补充说明
简单参数基本数据类型参数,如int、String等。通过方法形参自动绑定,或使用@RequestParam注解手动映射。适用于单个基本数据类型的参数接收。形参变量名与请求参数名一致时自动绑定。
实体参数POJO对象参数,请求参数名与实体对象属性名一致。自动封装,通过属性名绑定。适用于接收对象类型的请求参数。支持嵌套对象和数组。
数组集合参数数组或集合类型参数,如List、Set等。请求参数名与数组或集合名一致,使用@RequestParam注解绑定。适用于接收数组或集合类型的请求参数。可以接收多个相同类型的参数值。
日期参数日期类型的参数,如java.util.Date。使用@DateTimeFormat注解格式化日期参数。适用于接收日期类型的请求参数。支持自定义日期格式。
JSON参数请求体为JSON格式的参数。使用@RequestBody注解接收JSON格式的请求体。适用于接收复杂JSON对象或数组。需要在HTTP请求的Content-Type头部设置为application/json。
路径参数URI模板变量,如RESTful API中的资源标识符。使用@PathVariable注解绑定URI模板变量。适用于RESTful API中,将URL的一部分映射到方法参数。通常与@RequestBody或@RequestParam结合使用。

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

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

相关文章

SpringCloudAlibaba组件集成

SpringCloudAlibaba组件集成 Nacos服务注册与发现 1.Nacos认识与安装 1.1.什么是Nacos Nacos和Eureka有着相同的能力&#xff0c;甚至更为强大&#xff0c;作为Dubbo 生态系统中重要的注册中心实现。官方对它有如下定义&#xff1a; Nacos致力于帮助您发现&#xff0c;配置…

kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数

场景&#xff1a; kettle中http post步骤如何发送http请求且传递body参数&#xff1f; 解决方案&#xff1a; http post步骤中直接设置Request entity field字段即可。 1、手边没有现成的post接口&#xff0c;索性用python搭建一个简单的接口&#xff0c;关键代码如下&#…

JCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNNGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分类效果 格拉姆…

NVIDIA新模型Nemotron-4:98%的训练数据是合成生成的,你敢信?

获取本文论文原文PDF&#xff0c;请公众号 AI论文解读 留言&#xff1a;论文解读 标题&#xff1a;Nemotron-4 340B Technical Report 模型概述&#xff1a;Nemotron-4 340B系列模型的基本构成 Nemotron-4 340B系列模型包括三个主要版本&#xff1a;Nemotron-4-340B-Base、…

序列化与反序列化漏洞实例

实验环境&#xff1a; 本次的序列化与反序列化漏洞为2021年强网杯上的一道比赛题目&#xff0c;我使用phpstudy集成环境将其测试环境搭建在了本地&#xff0c;如下。涉及的几个页面php为&#xff1a; index.php function.php myclass.php index.php : <?php // inde…

二叉树、二叉查找树、平衡二叉树及各种旋转机制

二叉树 大体构型&#xff1a; 树里每个结点存储的有&#xff1a;所有树都是这样 二叉树的度&#xff1a;任意节点度<2 二叉树的属性&#xff1a; 二叉树的遍历顺序&#xff1a; 前&#xff1a; 中&#xff1a; 后&#xff1a; 二叉查找树&#xff1a;每个节点最多2子节点&…

最新Prompt预设词分享,DALL-E3文生图+文档分析

使用指南 直接复制使用 可以前往已经添加好Prompt预设的AI系统测试使用&#xff08;可自定义添加使用&#xff09; 支持GPTs SparkAi SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。支持GPT-4o…

SAP STO跨公司间转储含POD交货后台配置简介

在前面的博文中我们演示了STO跨公司间转储含POD的前台的操作。本文将演示后台的配置的操作步骤 1、首先是客户和供应商的设置 关联方的既要是供应商也试试客户 2、设置装运条件 路径&#xff1a;SPRO—>物料管理—>采购—>采购订单—>设置库存调拨订单—>定义…

TestProject Python SDK入门

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;-CSDN博客跳槽涨薪的朋友们有福了&#xff0c;今天给大家推荐一个软件测试面试的刷题小程序。​编辑https://…

[Qt的学习日常]--常用控件3

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、显示类控…

【Linux Vim的保姆级教程】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

温湿度采集与OLED显示

目录 一、什么是软件I2C 二、什么是硬件I2C 三、STM32CubeMX配置 1、RCC配置 2、SYS配置 3、I2C1配置 3、I2C2配置 4、USART1配置 5、TIM1配置 6、时钟树配置 7、工程配置 四、设备链接 1、OLED连接 2、串口连接 3、温湿度传感器连接 五、每隔2秒钟采集一次温湿…

前端技术回顾系列 11|TS 中一些实用概念

在微信中阅读,关注公众号:CodeFit。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注 我的公众号:CodeFit,为我的持续创作提供动力。 上文回顾:泛型在类和接口中的应用 上一篇文章我们回顾了 泛型 在 类 和 接口 中的应用。 通过使用泛型,我们…

【Linux环境下Hadoop部署—Xshell6】解决“要继续使用此程序,您必须应用最新的更新或使用新版本。”

问题描述 打开xshell使用&#xff0c;弹出&#xff1a; 解决方案&#xff1a; 修改安装目录下面的 nsilense.dll 文件 用二进制编辑器&#xff08;notepad的HEX-Editor插件&#xff09;打开Xshell/Xftp安装目录下的 nslicense.dll。 HexEdit插件安装&#xff1a; 1.下载HexEdi…

springboot与flowable(7):流程变量

一、启动时添加流程变量 拿第一个流程图举例&#xff0c;创建一个新的流程定义。 Testvoid contextLoads() {DeploymentBuilder deployment repositoryService.createDeployment();deployment.addClasspathResource("process01/FirstFlow.bpmn20.xml");deployment.…

算法设计与分析 实验3 回溯法求地图填色问题

目录 一、实验目的 二、背景知识 三、实验内容 四、算法思想 未优化的回溯算法 节点选择-最小剩余值准则&#xff08;MRV&#xff09; 节点选择-最多约束准则&#xff08;DH&#xff09; 颜色选择-最少约束选择 数据结构的选择 向前探查 颜色轮换&#xff08;贪心置…

专业技能篇---计算机网络篇

文章目录 前言计算机网络基础一、网络分层模型 HTTP一、从输入URL到页面显示发生了什么&#xff1f;二、Http的状态码有哪些&#xff1f;三、 HTTP与HTTPS有什么区别&#xff1f;四、URI 和 URL 的区别是什么?五、Cookie和Session有什么区别&#xff1f;六、GET与POST 前言 主…

shell脚本之函数

一、1.函数&#xff1a;将命令序列按照固定的表达格式写在一起 2.函数作用&#xff1a;可以重复使用的命令序列&#xff0c;大的工程分割成若干个小块&#xff0c;依次执行&#xff0c;提高代码的可读性。 3.函数的两种格式 4.return作用&#xff1a;只能写在函数内部&#xff…

Facebook:数字时代的文化交流平台

在当今信息爆炸的数字时代&#xff0c;Facebook已经成为了一个不可或缺的社交媒体平台&#xff0c;不仅在个人生活中起到了联系社交的作用&#xff0c;更在全球范围内促进了文化交流和理解。本文将深入探讨Facebook作为文化交流平台的重要性&#xff0c;并分析其在数字时代如何…

个人博客测试用例设计

个人博客测试用例设计 个人博客测试用例 分别从功能、性能、安全、兼容及界面分别展开 个人博客测试用例