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

news2024/11/17 23:02:02

💻博主现有专栏:

                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会根据参数名和路径中的占位符进行自动匹配。

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

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

相关文章

【Qt秘籍】[001]-从入门到成神-前言

一、Qt是什么&#xff1f;[概念] Qt是一个跨平台的应用程序开发框架&#xff0c;简单来说&#xff0c;它是一套工具和库&#xff0c;帮助软件开发者编写可以在多种操作系统上运行的图形用户界面&#xff08;GUI&#xff09;应用程序。比如&#xff0c;你用Qt写了一个软件&#…

Spring-Cloud-CircuitBreaker-Resilience4j (3.1.1)

介绍 Resilience4j 是一个专为函数式编程而设计的轻量级容错库。Resilience4j 提供高阶函数&#xff08;装饰器&#xff09;&#xff0c;以增强任何功能接口、lambda 表达式或方法引用&#xff0c;包括断路器、速率限制器、重试或隔板。您可以在任何函数接口、lambda 表达式或…

LeeCode热题100(两数之和)

本文纯干货&#xff0c;看不懂来打我&#xff01; 自己先去看一下第一题的题目两数之和&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 简单来说就是让你在一个数组里面找两个数&#xff0c;这两个数的和必须满足等于目标值target才行。 我认为你要是没有思路的话&a…

CANDela studio基础使用

ECU Information 可以修改ECU的名称 里面有个Supported Interfaces&#xff0c;可以在CDDT里面选择支持的通讯接口 可以在tools下面新建internface&#xff0c;也可以从其他CDDT文件里面复制过来&#xff0c;复制的时候注意要另外将里面的参数再复制一次。 也可以在这里点击新…

Spring Boot 官方不再支持 Spring Boot 的 2.x 版本!新idea如何创建java8项目

idea现在只能创建最少jdk17 使用 IDEA 内置的 Spring Initializr 创建 Spring Boot 新项目时&#xff0c;没有 Java 8 的选项了&#xff0c;只剩下了 > 17 的版本 是因为 Spring Boot 官方不再支持 Spring Boot 的 2.x 版本了&#xff0c;之后全力维护 3.x&#xff1b;而 …

SpringBoot 七牛云 OSS 私有模式 获取访问链接

目录 一、问题引出 二、在SpringBoot中获取私有访问路径的操作 一、问题引出 由于七牛云OSS的公有模式存在被盗刷的风险&#xff0c;可能导致服务器额外的费用&#xff0c;于是我选择私有模式进行操作。私有模式的访问路径是一个问题&#xff0c;因为需要对应着token和e这两…

Gradio 案例——将文本文件转为词云图

文章目录 Gradio 案例——将文本文件转为词云图界面截图依赖安装项目目录结构代码 Gradio 案例——将文本文件转为词云图 利用 word_cloud 库&#xff0c;将文本文件转为词云图更完整、丰富的示例项目见 GitHub - AlionSSS/wordcloud-webui: The web UI for word_cloud(text t…

一个浏览器插件,绕过限制,登录微信网页版!

摘要 早在2017年开始&#xff0c;微信网页版就已经住逐渐开始停止登录&#xff0c;以为了保障你的账号安全为由引导你使用电脑版微信。具体如下&#xff1a; 当然这个影响并不是所有账号&#xff0c;还是有一些账号不明觉厉地没有被影响到&#xff0c;我自己有2个号都还是可以…

MinIO 使用

MinIO自建对象存储 1、dock-compose 使用dock-compose拉取 minio:image: "minio/minio"container_name: minioports:- "9000:9000"- "9001:9001"volumes:- "./minio/data1:/data1"- "./minio/data2:/data2"restart: on-fai…

32. 【Java教程】集合

在前面的小节中&#xff0c;我们学习了数组&#xff0c;本小节学习的集合同样用于存放一组数据&#xff0c;我们将学习什么是集合、集合的应用场景 &#xff0c;在应用场景部分我们将对比 Java 数组与集合的区别&#xff0c;还将系统介绍 Java 集合的架构&#xff0c;也将结合实…

调查问卷和考试系统SurveyKing

什么是 SurveyKing &#xff1f; SurveyKing 是功能更强大的调查问卷、考试系统&#xff0c;很多功能体验超过问卷网、问卷星。支持在线考试/调查问卷/公开查询/题库刷题/投票。 软件特性 &#x1f947; 支持 20 多种题型&#xff0c;如填空、选择、下拉、级联、矩阵、分页、签…

TCP的重传机制

TCP 是一个可靠的传输协议&#xff0c;解决了IP层的丢包、乱序、重复等问题。这其中&#xff0c;TCP的重传机制起到重要的作用。 序列号和确认号 之前我们在讲解TCP三次握手时&#xff0c;提到过TCP包头结构&#xff0c;其中有序列号和确认号&#xff0c; 而TCP 实现可靠传输…

FPGA高端项目:FPGA解码MIPI视频+图像缩放+视频拼接,基于MIPI CSI-2 RX Subsystem架构实现,提供4套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案本方案在Xilinx Artix7-35T上解码MIPI视频的应用本方案在Xilinx Artix7-100T上解码MIPI视频的应用本方案在Xilinx Kintex7上解码MIPI视频的应用本方案在Xilinx Zynq7000上解码MIPI视频的应用本方案在…

小邪大佬最新版微信hook

目前小邪大佬已经更新到最新版本微信hook了。 /发送文件 BOOL SendCdnFilePbMsg(string sendId, string cdnkey, string aes_key,string file_name,string md5, int size, string syncKey) {FileMessage sfm;sfm.set_file_id(cdnkey);sfm.set_size(size);sfm.set_aes_key(aes_…

内燃机智能制造工厂工业物联数字孪生平台,推进制造业数字化转型

内燃机智能制造工厂工业物联数字孪生平台&#xff0c;推进制造业数字化转型。随着科技的飞速发展&#xff0c;制造业正迎来一场深刻的数字化转型。内燃机智能制造工厂工业物联数字孪生平台&#xff0c;作为这一转型的重要推手&#xff0c;正逐渐改变着传统制造业的面貌。 内燃…

《异常检测——从经典算法到深度学习》29 EasyTSAD: 用于时间序列异常检测模型的工业级基准

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

LC 旋转 - 模拟对象

原文链接 链接 液晶 (LC) 旋转网格属性允许您以 theta、phi 为单位指定空间变化的 LC 导向。 液晶由杆状分子结构组成&#xff0c;这些分子结构具有相对于长轴的旋转对称性。因此&#xff0c;液晶具有空间变化的单轴光学特性。 相对于分子长轴和分子短轴的折射率称为非寻常 ne …

Mybatis数据加密解密

文章目录 Mybatis数据加密解密一、自定义注解二、自定义参数处理拦截器结果集拦截器加密解密 Mybatis数据加密解密 方案一&#xff1a;Mybatis拦截器之数据加密解密【Interceptor】 拦截器介绍 Mybatis Interceptor 在 Mybatis 中被当作 Plugin(插件)&#xff0c;不知道为什么…

注意力可视化代码

读取网络层输出的特征到txt文件&#xff0c;arr为文件名 def hot(self, feature, arr):# 在第二维&#xff08;通道维&#xff09;上相加summed_tensor torch.sum(feature, dim1, keepdimTrue) # 结果形状为 [1, 1, 64, 64]selected_matrix summed_tensor.squeeze(1) # 移除…

【RS】哨兵系列新网站无法下载的问题及解决办法(Sentinel-2)

最近有些小伙伴留言说哨兵数据无法下载&#xff0c;网站打开后会有一层蒙版&#xff0c;无法选取研究区等信息&#xff0c;今天就跟大家分享一下如何解决这个问题。还知道如何下载的小伙伴可以移步到之前的文章&#xff1a;【RS】欧空局Sentinel-2卫星数据下载(哨兵1、2、3、5P…