【Springboot】——项目的创建与请求参数应用

💻博主现有专栏:

                C51单片机(STC89C516),c语言,c++,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux,基于HTML5的网页设计及应用,Rust(官方文档重点总结),jQuery,前端vue.js,Javaweb开发,设计模式、Python机器学习、Springboot等
🥏主页链接:

                Y小夜-CSDN博客

目录

🎯了解spring

🎯Springboot的优势所在

🎯编写一个Springboot-Web-maven工程

💻创建工程,勾选依赖

        ✨可能出现测错误

💻定义类,添加注解

💻进行测试

🎯请求参数注解

💻简单参数

💻实体参数

💻数组集合参数

💻日期参数

💻Json参数

💻路径参数


🎯了解spring

官网:spring官方网站

上面解释道:

        对每个人来说,Spring使Java编程变得更快、更容易、更安全。Spring对速度、简单性和生产力的关注使其成为世界上最流行的Java框架。

🎯Springboot的优势所在

  1. 快速开发:Spring Boot 允许开发人员快速创建可部署应用程序的框架,大量减少了传统 Spring 应用程序的配置。Spring Boot 内置了许多常见的功能,例如:嵌入式服务器、安全性、指标和运行状况检查等。

  2. 简单配置:Spring Boot 配置简单且易于理解。Spring Boot 允许使用 application.properties 或 application.yml 文件来进行配置。

  3. 自动配置:Spring Boot 自动配置使得开发人员不必手动配置 Spring 应用程序的许多组件。Spring Boot会根据类路径中的jar包自动配置 Spring 应用程序。

  4. 微服务支持:Spring Boot 为构建微服务提供了良好的支持。Spring Boot 集成了诸多微服务框架,如:Spring Cloud Netflix、Spring Cloud Consul、Spring Cloud Config 等,使开发人员实现微服务架构变得更加容易。

  5. 测试支持:Spring Boot 提供了丰富的测试支持,开发人员可以使用 JUnit 或者其他测试框架进行单元测试和集成测试。

  6. 生态系统:Spring Boot 的生态环境非常丰富,有大量的插件可以帮助开发人员快速集成开发工具、数据库、消息队列等。

        总之,Spring Boot 已经成为了开发人员创建 Web 应用程序、RESTful API 和微服务的首选工具之一,它的优势在于简化了配置、提高了开发效率、支持微服务、提供了丰富的测试支持和生态系统。

🎯编写一个Springboot-Web-maven工程

💻创建工程,勾选依赖

1.new一个新的项目,选择Spring Initializr(如果没有这个,可以下一个Spring Initializr插件,就可以)

2.选择服务URL,默认的就行

3.选择存放的位置,以及Type选择Maven

4.选择JDK版本以及Java版本


        ✨可能出现测错误

  1.         博主的JDK是11版本,默认的没有11版本的,这里可以把上面的url地址改为阿里云的镜像地址https://start.aliyun.com,就可以选择11版本的了。
  2.         如果url旁边有红色感叹号,报连接超时的错误或者无法进行下下一步,解决方案如下:

点击File——》Settings

搜索Http Proxy

点击Auto-detect proxy settings,输入刚刚设置的url地址

进行测试连接,点击Check connection

输入连接URL,显示连接成功。


5.解决错误之后,回到前几步,勾选Spring Web,导入依赖,点击创建

💻定义类,添加注解

在SpringBootApplication类的同级目录下,创建一个HelloController类(一定要是同级目录下!,涉及到扫描范围,以后再讲)

在HelloController类中编写代码

@RestController
public class HelloController {
    @RequestMapping("/aa")
    public String a(){
        System.out.printf("你好");
        return  "你好";
    }
}

        这是一个简单的 Spring Boot 控制器类,使用了@RestController注解来标识这是一个 RESTful 风格的控制器类。其中定义了一个名为a()的方法,并使用@RequestMapping("/aa")注解将该方法映射到 "/aa" 的请求路径上。

        在这个方法中,使用了System.out.printf("你好")语句来在控制台输出"你好",然后通过return语句返回字符串"你好"作为响应内容。

        当访问应用程序的 "/aa" 路径时,该方法会被调用,控制台将输出"你好",并将"你好"作为响应内容返回给客户端。

💻进行测试

运行SpringBootApplication类

在浏览器中输入

http://localhost:8080/aa

页面上:

控制台输出一个“你好”

🎯请求参数注解

💻简单参数

简单参数:如果方法形参名名称不匹配,可以使用@RequestParam完成映射。

@RequestParam是一种常用的注解,用于获取HTTP请求中的参数值。通过使用@RequestParam注解,我们可以将请求参数映射到方法中的参数上。

例如,在Java Spring框架中,我们可以这样使用@RequestParam注解:

@RequestMapping("/example")
public String exampleMethod(@RequestParam("paramName") String paramValue) {
    // 处理业务逻辑
    return "result";
}

        在上面的例子中,我们使用@RequestParam注解来绑定名为"paramName"的请求参数到方法的paramValue参数上。

        请注意,@RequestParam注解还有其他属性可以配置,例如设置参数的默认值、是否必需等。具体使用方式可以根据你所使用的框架和语言进行调整。

💻实体参数

        如果你需要将多个请求参数绑定到一个实体参数上,可以使用实体类作为方法的参数,并通过@RequestParam注解来指定每个属性对应的请求参数。这样,框架会自动将请求参数的值映射到实体类的属性上。

@RequestMapping("/example")
public String exampleMethod(@RequestParam("param1") String param1, 
                            @RequestParam("param2") int param2,
                            @RequestParam("param3") boolean param3) {
    // 处理业务逻辑
    return "result";
}

        在上面的例子中,我们通过@RequestParam注解将三个请求参数分别绑定到了方法的param1、param2和param3参数上。

        如果你想将多个参数绑定到一个实体类中,首先需要创建一个包含对应属性的实体类。然后,在方法参数中使用该实体类作为参数,并添加@RequestParam注解来指定请求参数的映射关系。

        例如,假设我们有一个User实体类:

public class User {
    private String username;
    private int age;
    // 其他属性
    
    // getter和setter方法
}

然后,在Controller中可以这样使用:

@RequestMapping("/user")
public String createUser(User user) {
    // 处理业务逻辑,使用user对象的属性值
    return "result";
}

💻数组集合参数

        在 Spring Boot 中,你可以通过使用数组或集合作为方法的参数来接收多个参数。这样可以方便地处理多个值传递给控制器的情况。

        以下是使用数组和集合作为参数的示例:

@RestController
public class MyController {
    
    @GetMapping("/array-example")
    public String handleArrayExample(String[] values) {
        // 处理数组参数
        for (String value : values) {
            System.out.println(value);
        }
        
        return "Array Example";
    }
    
    @GetMapping("/list-example")
    public String handleListExample( List<String> values) {
        // 处理集合参数
        for (String value : values) {
            System.out.println(value);
        }
        
        return "List Example";
    }
}

💻日期参数

        在Java中,常用的表示日期的数据类型有java.util.Datejava.time.LocalDatejava.sql.Date等。具体选择哪个类型取决于你的项目需求和开发环境。

        以下是一个示例,演示如何将日期参数绑定到方法的参数上:

@RequestMapping("/example")
public String exampleMethod(@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {
    // 处理业务逻辑
    return "result";
}

        在上面的例子中,我们使用@RequestParam注解将名为"date"的请求参数映射到方法的date参数上,同时使用@DateTimeFormat注解来指定日期格式。

💻Json参数

        如果你需要从请求体中获取JSON格式的参数并将其绑定到方法的参数上,可以使用@RequestBody注解。

        在Controller方法中,添加一个使用@RequestBody注解的参数,Spring框架会自动将请求体中的JSON数据转换为对应的Java对象。

@RequestMapping("/example")
public String exampleMethod(@RequestBody ExampleObject exampleObject) {
    // 处理业务逻辑,使用exampleObject对象的属性值
    return "result";
}

        在上面的例子中,我们使用@RequestBody注解将请求体中的JSON数据映射到ExampleObject对象上,然后可以直接使用ExampleObject对象的属性值进行业务逻辑处理。

        请注意,请求体中的JSON数据需要与ExampleObject对象的属性名和类型相匹配,否则可能会导致转换失败或出现数据不一致的问题。

💻路径参数

        如果你需要从URL路径中获取参数并将其绑定到方法的参数上,可以使用@PathVariable注解。

        在Controller方法中,添加一个使用@PathVariable注解的参数,Spring框架会自动将URL路径中的参数值传递给该参数。

@RequestMapping("/example/{id}")
public String exampleMethod(@PathVariable String id) {
    // 处理业务逻辑,使用id参数
    return "result";
}

        可以在注解中不指定参数名,即:@PathVariable String id。这样,Spring会根据参数名和路径中的占位符进行自动匹配。

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

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

相关文章

<PLC><Python>基于pyqt5使用python与汇川PLC进行485串口通讯(自由协议)

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如…

Python知识点12---Python的I/O操作

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的流(I/O)操作&#xff0c;最简单的其实就是输入和输出&#x…

flask-slqalchemy使用详解

目录 1、flask-sqlalchemy 1.1、flask_sqlalchemy 与sqlalchemy 的关系 1.1.1、 基本定义与用途 1.2、flask_sqlalchemy 的使用 1.2.1、安装相关的库 1.2.2、项目准备 1.2.3、创建ORM模型 1.2.3.1、使用db.create_all()创建表的示例 1.2.3.2、创建多表关联ORM模型 1.…

每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)

相遇 原题链接登录—专业IT笔试面试备考平台_牛客网 题目描述 运行代码 #include<iostream> using namespace std; int main(){ int a,b; cin>>a>>b; if(ab) { cout<<"p"; } else if(a - b 1 || (a 1 && b 3)){cout <<…

【图像增强处理工具】软件使用说明书

软件使用说明书 软件名称 图像增强处理工具 软件简介 该软件是一个基于 PySide6 和 OpenCV 的图像处理工具,用户可以通过 GUI 界面来执行图像的旋转、平移和镜像操作,并将处理后的图像保存到指定路径。 运行软件须知 确保 ui_form.py 文件在同一目录下,该文件包含了通…

鸿蒙实现汉字转拼音

1.使用三方库 pinyin-pro 地址&#xff1a;OpenHarmony三方库中心仓 亲测可用&#xff0c;一共三个关于 转pinyin的库&#xff0c;一个无法使用&#xff0c;另一个时间太久。 ohpm i pinyin-proimport { pinyin } from pinyin-pro;// 获取带音调拼音 pinyin(汉语拼音); // …

11Linux学习笔记

Linux 实操篇 目录 文章目录 Linux 实操篇1.rtm包&#xff08;软件&#xff09;1.1 基本命令1.2 基本格式1.3安装rtm包1.4卸载rtm包 2.apt包2.1 基本命令结构2.2 常用选项2.3常用命令 1.rtm包&#xff08;软件&#xff09; 1.1 基本命令 1.2 基本格式 1.3安装rtm包 1.4卸载r…

webman-admin多图上传预览和删除

前言 在webmen文档和论坛中都没找到多图上传的示例&#xff0c;自己找了一个&#xff0c;整合了一下凑合用 insert页面 引入css <link rel"stylesheet" href"/app/admin/admin/css/muti-upload.css" />muti-upload.css内容如下 .uploader-list .ha…

H6922 2.8C-40V (最低启动电压2.5V)升压BOOST恒压芯片 5V12V24V升压IC

H6922升压BOOST恒压芯片是一款2.8C-40V &#xff08;最低启动电压2.5V&#xff09;升压BOOST恒压芯片 5V12V24V升压IC 首先&#xff0c;H6922的宽输入电压范围&#xff08;2.8-40V&#xff09;和低启动电压&#xff08;最低2.5V&#xff09;使其能够适应不同复杂的电源环境。无…

Java网络编程(上)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:Java文件IO&#x1f649; &#x1f439;今日诗词:来如春梦几多时&#xff1f;去似朝云无觅处&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&a…

【前缀和 记忆化搜索】LeetCode1444. 切披萨的方案数

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 动态规划 记忆化搜索 LeetCode1444. 切披萨的方案数 给你一个 rows x cols 大小的矩形披萨和一个整数 k &#xff0c;矩形包含两种字符&#xff1a; ‘A’ &#xff…

【ARM-Linux篇】u-boot编译

嵌入式Linux系统和PC完整的操作系统的对比如下&#xff1a; 一、u-boot简介 uboot是一种通用的引导加载程序&#xff0c;它可以用于多种嵌入式系统&#xff0c;支持多种操作系统&#xff0c;如Linux, Android,NetBSD等。uboot的主要作用是将操作系统内核从存储设备&#xff08…

【Leetcode笔记】40.组合总和II

1. 题目要求 这道题目和39.组合总和不一样的地方在于&#xff1a;数组中含有相同的元素。同样地&#xff0c;结果不能含有重复组合。 拿第一个示例来看&#xff0c; candidates [1, 1, 2, 5, 6, 7, 10]问题在于&#xff1a;第一个path[1(index 0), 2]&#xff0c;绝不能出现…

mysql实战——mysql主从复制管理

一、常见的管理操作 1、查看主库状态 show master status 2、查看从库复制的状态 show slave status 3、在主库上查看从库ip和端口信息 show processlist show slave hosts 4、reset slave、reset master、reset slave all 1、reset master 该命令会执行以下操作&#xff…

JS对象由浅入深

对象 对象&#xff08;Object&#xff09;&#xff1a;JavaScript里的一种数据类型&#xff08;引用类型&#xff09;&#xff0c;也是用于存储数据的 好处&#xff1a;可以用来详细的描述某个事物&#xff0c;是用键值对形式存储语义更明了 特点&#xff1a;对象数据是无序的&…

C++程序命令行参数学习

argc是参数个数&#xff1b; argv[0]是程序名&#xff0c;argv[1]是第一个参数&#xff1b; 如果输入osgptr1 x &#xff0c;osgptr1是程序名&#xff0c;argc是2&#xff1b; 不算程序名&#xff0c;实际的参数个数是argc-1&#xff1b; #include <iostream>using …

Microsoft Fabric 是什么?

最近半个月没有更新内容&#xff0c;原因是什么呢&#xff1f; 原因是花了两周的时间备考了一下"Microsoft Certified: Fabric Analytics Engineer Associate"的考试认证。 非常幸运考试通过了。 那什么是Microsoft Fabric 呢&#xff1f; Microsoft Fabric 是一个…

统信UOS SSH服务升级(ubuntu20)内网

服务器配置 系统信息 SSH版本 目标版本 openssh-server_8.2p1-4_arm64.deb 因为不通互联网&#xff0c;所以所有deb包需要手动下载&#xff08;可以连接互联网的可以自动忽略手动下载deb步骤&#xff0c;直接apt-get install xxx 即可&#xff09; 升级步骤 !!!deb下载方式…

Vue.js - 生命周期与工程化开发【0基础向 Vue 基础学习】

文章目录 Vue 的生命周期Vue 生命周期的四个阶段Vue 生命周期函数&#xff08;钩子函数 工程化开发 & 脚手架 Vue CLI**开发 Vue 的两种方式&#xff1a;**脚手架目录文件介绍项目运行流程组件化开发 & 根组件App.vue 文件&#xff08;单文件组件&#xff09;的三个组成…

【JMeter接口自动化】第2讲 Jmeter目录结构

JMeter的目录结构如下&#xff1a; bin目录&#xff1a;可执行文件目录&#xff0c;启动jmeter时&#xff0c;就是启动bin目录下的ApacheJmeter.jar&#xff0c;jmeter.bat&#xff0c;jmeter.sh ApacheJmeter.jar:启动文件 jmeter.bat&#xff1a;Windows 的启动命令。 jmeter…