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

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

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

相关文章

element-plus中在表格校验输入的值

element-plus中在表格校验输入的值 效果&#xff1a; 注意事项&#xff1a;需要在表单套一个表格的字段 代码&#xff1a; <el-form :model"tableFrom" ref"tableDataRef" :rules"rules" style"margin: 0px !important;">&…

vue中大屏可视化适配所有屏幕大小

1. 外部盒子 .screenBox {width: 100vw;height: 100vh;background: url("/assets/images/bg.png") no-repeat;background-size: cover; }2.比例盒子 外层盒子css定义 .boxScale {width: 1920px;height: 1080px;background-color: orange;transform-origin: left top;…

5.29工效学-人因工程人机交互

对于工效学这门课&#xff0c;一直都感觉很有意思&#xff0c;是一个值得再认真一点的课。可惜上课的时候效率不高&#xff0c;有感兴趣的东西课后也没有自行去拓展开来&#xff0c;前面的课我感觉还讲了比较重要的东西&#xff0c;但是&#xff0c;全忘了呢&#xff08;真的对…

Mac OS 用户开启 80 端口

开启端口 sudo vim /etc/pf.conf # 开放对应端口 pass out proto tcp from any to any port 8080 # 刷新配置文件 sudo pfctl -f /etc/pf.conf sudo pfctl -e获取本机ip地址 ifconfig en0 | grep inet | grep -v inet6 | awk {print $2}访问指定端口

C语言:深入了解(联合体和枚举)

目录 联合体 联合体的类型的声明 联合体的特点 相同成员的结构体和联合体对比 联合体大小的计算 联合体的使用举例 联合体的类型&#xff1a;判断联合体是大端还是小端 枚举类型 枚举类型声明 枚举类型的优点 枚举类型的使用 联合体 联合体的类型的声明 像结构体⼀…

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

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

【机器学习】集成语音与大型语音模型等安全边界探索

探索集成语音与大型语言模型&#xff08;SLMs&#xff09;的安全边界 一、引言二、SLMs的潜在安全风险三、对抗性攻击与越狱实验四、提高SLMs安全性的对策五、总结与展望 一、引言 近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;集成语音与大型语言模型&#xff08…

OceanBase 4.3.0 列存引擎解读:OLAP场景的入门券

近期&#xff0c;OceanBase 发布了4.3.0版本&#xff0c;该版本成功实现了行存与列存存储的一体化&#xff0c;并同时推出了基于列存的全新向量化引擎和代价评估模型。通过强化这些能力&#xff0c;OceanBase V4.3.0 显著提高了处理宽表的效率&#xff0c;增强了在AP&#xff0…

【计算机毕业设计】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别

谷物识别系统&#xff0c;本系统使用Python作为主要编程语言&#xff0c;通过TensorFlow搭建ResNet50卷积神经算法网络模型&#xff0c;通过对11种谷物图片数据集&#xff08;‘大米’, ‘小米’, ‘燕麦’, ‘玉米渣’, ‘红豆’, ‘绿豆’, ‘花生仁’, ‘荞麦’, ‘黄豆’, …

2023年亚太杯A题:果园采摘机器人的图像识别,一二题

问题一&#xff1a;基于附件1中提供的可收获苹果的图像数据集&#xff0c;提取图像特征&#xff0c;建立数学模型&#xff0c;计算每幅图像中的苹果的数量&#xff0c;并绘制附件1中所有苹果的分布直方图。 对于自动采摘机器人&#xff0c;首要的能力就是识别出苹果对象&#…

数字信号处理实验四:IIR数字滤波器设计及软件实现

一、实验目的 1. 掌握MATLAB中进行IIR模拟滤波器的设计的相关函数的应用&#xff1b; 2. 掌握MATLAB的工具箱中提供的常用IIR数字滤波器的设计函数的应用&#xff1b; 3.掌握MATLAB的工具箱中提供的模拟滤波器转数字滤波器的相关的设计函数的应用。 二、实验内容 本实验为…

秋招突击——算法打卡——5/30——复习{最大上升子序列的和、面试算法缺陷补充}——新做:{回文数+补充 自定义Stoi实现、正则表达式匹配}

文章目录 复习导弹拦截——最大上升子序列和推理过程实现代码补充昨日面试 新作回文数实现代码 字符串转整数正则表达式匹配个人实现思路分析实现代码如下 参考做法思路分析实现代码 总结 复习 导弹拦截——最大上升子序列和 同样类型题目链接&#xff1a;导弹拦截重做这道题…

力扣刷题--485. 最大连续 1 的个数【简单】

题目描述 给定一个二进制数组 nums &#xff0c; 计算其中最大连续 1 的个数。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,0,1,1,1] 输出&#xff1a;3 解释&#xff1a;开头的两位和最后的三位都是连续 1 &#xff0c;所以最大连续 1 的个数是 3. 示例 2: 输入&…

WindowManager相关容器类

窗口中容器类介绍&#xff1a; 本节内容较多&#xff0c;建议结合前面的内容一起阅读&#xff1a; 1、addWindow的宏观概念 2、WindowManager#addView_1 3、WindowManager#addView_2 1&#xff09;、WindowContainer&#xff1a; class WindowContainer<E extends WindowC…

算法(一)递归

文章目录 递归的概念递归三要素递归demo打印100次“hello word”斐波那契数列 递归的概念 递归算法是一种直接或者间接调用自身函数或者方法的算法。 递归三要素 递归条件结束 因为递归是循环调用自身&#xff0c;因此就必须要有结束条件&#xff0c;或者就会OOM。 函数的功…

低代码开发系统是什么?它有那些部分组成?

低代码开发系统是什么&#xff1f;它有那些部分组成&#xff1f; 一、引言 在当今快速变化的商业环境中&#xff0c;企业对于快速响应市场需求、降低开发成本和提高开发效率的需求日益增强。低代码开发系统&#xff08;Low-Code Development Platform&#xff09;应运而生&am…

安卓启动 性能提升 20-30% ,基准配置 入门教程

1.先从官方下载demohttps://github.com/android/codelab-android-performance/archive/refs/heads/main.zip 2.先用Android studio打开里面的baseline-profiles项目 3.运行一遍app&#xff0c;这里建议用模拟器&#xff0c;&#xff08;Pixel 6 API 34&#xff09;设备运行&a…

思科防火墙 网线连接的端口还是down 已配置 端口还是down

环境&#xff1a; 思科防火墙fpr-2100 isco Firepower 2100 系列防火墙是思科系统&#xff08;Cisco Systems&#xff09;推出的一款中端网络安全和防火墙设备。这一系列的产品主要针对中到大型企业的需求&#xff0c;提供高性能的威胁防护和网络流量管理功能。 问题描述&am…

Java微服务智慧工地可视化SaaS云解决方案源码

智慧工地是指运用信息化手段&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生态圈&#xff0c;并将此数据在虚拟现实环境下与物联网采集到的工程信息进行数据挖掘分析&#xff0c;提供过程趋势预测及专家预案&#xff0c;实现工程…

排序算法之直接选择排序【图文详解】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …