SpringBoot快速入门-上

news2025/1/10 16:59:03

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;
    }
    
    @Override
    public 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.coloradmin.cn/o/1836922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超大cvs文件导入MySQL

1 XXX.cvs 太大 使用cvs拆分HugeCSVSplitter_jb51工具进行拆分&#xff0c;Line Count 设置为1,000,000 注意&#xff1a;1 拆分后除第一个子cvs文件含有标题外&#xff0c;其他的子文档都不含有标题行&#xff1b; 2 后一个文档的第一行为前一个文档的…

python将数据保存到文件的多种实现方式

&#x1f308;所属专栏&#xff1a;【python】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的…

关于FPGA对 DDR4 (MT40A256M16)的读写控制 3

关于FPGA对 DDR4 &#xff08;MT40A256M16&#xff09;的读写控制 3 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a;ISE、Vivado、Quartus II 关于FPGA对 DDR4 &#xff08;MT40A256M16&#xff09;的读写控制 3一、引言二、DDR的功能性描述三、SDRAM设备中模式寄存器…

基于IDEA的Maven简单工程创建及结构分析

目录 一、用 mvn 命令创建项目 二、用 IDEA 的方式来创建 Maven 项目。 &#xff08;1&#xff09;首先在 IDEA 下的 Maven 配置要已经确保完成。 &#xff08;2&#xff09;第二步去 new 一个 project &#xff08;创建一个新工程&#xff09; &#xff08;3&#xff09;…

【windows|003】计算机硬件基础及存储单位

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&…

阿里云平台创建设备及连接

使用阿里云平台创建项目&#xff0c;利用MQTT.fx软件配置相关的连接&#xff0c;在软件上完成消息的订阅与推送&#xff0c;与手机APP进行同步数据。了解MQTT相关的协议。 1.注册阿里云平台账号&#xff0c;完成实名注册&#xff01; 618创新加速季_新迁入云享5亿算力补贴-阿里…

005-OSPF基本配置

OSPF基本配置 OSPF (Open Shortest Path First) 是一种链路状态路由协议&#xff0c;它属于内部网关协议&#xff08;IGP&#xff09;类别&#xff0c;用于在自治系统&#xff08;AS&#xff09;内部路由 IP 数据包。OSPF 通过使用 Dijkstra 算法计算最短路径树来确定到达每个…

电影时间首页(HTML+css)

使用HTMLcss制作的一个简单的电影时间首页 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>电影时间首页</title></head><body><!--header begin--><div style"height: 63px;">&…

从0开始开发一个简单web界面的学习笔记(HTML类)

文章目录 什么是HTML页面vscode 开放工具搭建第一个HTML页面编写vscode 如何快速生成代码框架html标签——注释、标题、段落、换行标签格式化标签img 标签(src 属性01)img 属性02(alt、title、width/height、border)a标签href属性a标签target属性表格标签01 基本属性表格标签02…

随想录Day63 | 单调栈 42. 接雨水 84.柱状图中最大的矩形

随想录Day63 | 单调栈 42. 接雨水 84.柱状图中最大的矩形 42. 接雨水 题目链接 42 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 第一次提交 class Solution { public:int trap(vector<int>…

买家用洗地机需要注意什么?全面评测热门洗地机品牌

对于忙碌的打工族来说&#xff0c;“做家务”是一件非常消费时间精力的事情&#xff0c;但它又是生活中的一部分&#xff0c;为了解决这些矛盾点&#xff0c;越来越多的清洁家电涌向市场&#xff0c;像集扫地、吸尘、洗地为一体的洗地机&#xff0c;在推拉之间便把脏污处理干净…

英码科技携手昇腾打造“三位一体”智慧化工解决方案,使能化工产业管理更高效、智能

我国是世界公认的化工大国。然而&#xff0c;大部分化工园区的日常管理方式较为传统&#xff0c;各园区、厂区的门禁、视频、停车场等子系统犹如一个个独立的“岛屿”&#xff0c;每个“岛屿”需要耗费大量人力及时间成本进行巡检、记录、上报&#xff0c;且不能做到全域、全时…

JavaFX DatePicker

JavaFX DatePicker允许从给定日历中选择一天。DatePicker控件包含一个带有日期字段和日期选择器的组合框。JavaFX DatePicker控件使用JDK8日期时间API。 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.DatePicker; import j…

C语言之操作符

目录 一、二进制 原码、反码、补码 二、移位操作符 位操作符 三、 逗号表达式 四、下标访问[]、函数调用() 五. 操作符的属性 整型提升 算术转换 六、总结 一、二进制 其实2进制、8进制、10进制、16进制是数值的不同表示形式而已。 其实10进制是生活中经常使用的&am…

docker容器中连接宿主机mysql数据库

最近要在docker中使用mysql数据库&#xff0c;首先考虑在ubuntu的镜像中安装mysql&#xff0c;这样的脚本和数据库都在容器中&#xff0c;直接访问localhost&#xff1a;3306&#xff0c;脚本很简单&#xff0c;如下&#xff1a; import pymysql# 建立数据库连接 db pymysql.…

港硕上岸鹅厂算法岗,谈谈感受和心得!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

技术革新| 卓翼飞思受邀出席2024士兵智能装备与技术学术大会

6月14日&#xff0c;由中国兵器装备集团智元研究院/智元国家重点实验室、中国兵工学会主办的 “2024士兵智能装备与技术学术大会” 在杭州隆重召开。卓翼智能应邀出席本次大会&#xff0c;并发表了题为《新概念飞行器及多智能体集群仿真系统研究》的演讲报告。 本次大会以“智能…

常见的网络设备

引入 园区网络安全部署场景 1、路由器&#xff1a; 跨网段通信设备 。 2、交换机&#xff1a; 同网段或跨网段通信设备。 3、AntiDDoS &#xff1a; DDoS 防御系统&#xff0c;通常旁挂部署于网络出口处&#xff0c; 位于防火墙上游&#xff0c;用于减轻防火墙报文处理负担。 …

NocoBase调研

项目概述&#xff1a; nocobase是一个开源的无代码和低代码开发平台&#xff0c;允许用户快速部署私有、可控、易于扩展的系统。 NocoBase官网&#xff1a;NocoBase-开源、私有部署的轻量级无代码和低代码开发平台 核心特性&#xff1a; 强调NocoBase的数据模型驱动方法&am…

JVM 性能分析案列——使用 JProfiler 工具分析 dump.hprof 堆内存快照文件排查内存溢出问题

在 windows 环境下实现。 参考文档 一、配置 JVM 参数 配置两个 JVM 参数&#xff1a; -XX:HeapDumpOnOutOfMemoryError&#xff0c;配置这个参数&#xff0c;会在发生内存溢出时 dump 生成内存快照文件&#xff08;xxx.hprof&#xff09;-XX:HeapDumpPathF:\logs&#xff…