【 Spring MVC 核心功能(二) - 获取参数(上)】

news2024/11/24 15:39:01

文章目录

  • 一、获取单个参数
  • 二、获取多个参数
  • 三、获取对象
  • 四、后端参数重命名
    • 4.1 使用 @RequestParam 重命名参数
    • 4.2 @RequestParam 中参数必传
    • 4.3 设置非必传参数
  • 五、使用 @PathVariable 获取URL中参数

一、获取单个参数

在 Spring MVC 中可以直接⽤⽅法中的参数来实现传单个参,⽐如以下代码:

    @RequestMapping("/m1")
    public Object method_1(String name) {
        System.out.println("参数 name:" + name);
        return "/index.html";
    }

在 postman 中访问⽅法:

在这里插入图片描述

程序运行结果得:

在这里插入图片描述


二、获取多个参数

在 Spring MVC 中可以直接⽤⽅法中的参数来实现传多个参,⽐如以下代码:

    @RequestMapping("/m3")
    public Object method_3(String name, String pwd) {
        System.out.println("name 参数:" + name);
        System.out.println("pwd 参数:" + pwd);
        return "/index.html";
    }

使用 postman 访问得:
在这里插入图片描述

程序运行得:
在这里插入图片描述

重要说明: 当有多个参数时,前后端进⾏参数匹配时,是以参数的名称进⾏匹配的,因此参数的位置是不影响后端获取参数的结果

通过在方法中加多个参数我们就可以实现传入多个参数,但是当我们需要传入更多参数时我们还是无限制的在方法中加参数吗?这显然不现实,这时我们就可以通过传入对象来解决 !!


三、获取对象

Spring MVC 可以⾃动实现参数对象的赋值,⽐如 Person 对象:

import lombok.Data;
@Data
public class Person {
    private int id;
    private String name;
    private String password;
}

传递对象代码实现:

    @RequestMapping("/m2")
    public Object method_2(Person p){
        System.out.println("对象中的 name:"+p.getName());
        System.out.println("对象中的 password:"+p.getPassword());
        return "/index.html";
    }

使用 postman 访问:

在这里插入图片描述

程序运行结果:

在这里插入图片描述

注意: 传递对象参数时,还是需要在 url 中输入对应的对象属性参数,并且注意参数名称保持一致 !!


四、后端参数重命名

4.1 使用 @RequestParam 重命名参数

某些特殊的情况下,前端传递的参数 key 和我们后端接收的 key 不⼀致,⽐如前端传递了⼀个time 给后端,⽽后端⼜是用 createtime 字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使⽤ @RequestParam 来重命名后端的参数值

具体实现代码:

    //后端参数重命名  @RequestParam是前端传来的参数key ,而UserName是后端设置的参数key
    @RequestMapping("/rename")
    public String rename(@RequestParam("ua") String UserName){
        return "Name:" + UserName;
    }

使用 postman 测试得:
在这里插入图片描述

4.2 @RequestParam 中参数必传

上⾯的列⼦有个弊端,如果我们是前端传递⼀个⾮ ua 的参数,就会出现程序报错的情况,如下图所示:

在这里插入图片描述

这是因为后端已经声明了前端必须传递⼀个 ua 的参数,但是前端没有给后端传递,我们查看
@RequestParam 注解的源码细节就可以发现端倪,如下:

在这里插入图片描述

4.3 设置非必传参数

如果我们的实际业务前端的参数是⼀个⾮必传的参数,我们可以通过设置 @RequestParam 中的
required=false 来避免不传递时报错,具体实现如下:

    //注意:当设置 @RequestParam 后,前端必须传入参数,不然程序就会报错,可以如下修改!此时前端不传该参数,后端认为是null,不会报错
    @RequestMapping("/rename")
    public String rename(@RequestParam(value = "ua", required = false) @RequestBody String UserName) {
        return "Name:" + UserName;
    }

使用 postman 测试得:

在这里插入图片描述


五、使用 @PathVariable 获取URL中参数

代码实现如下:

//http://127.0.0.1:8080/user/student/209000804/tanchen
@RequestMapping("/student/{id}/{name}")  //student为url地址 加了大括号的为参数
public String getStudentInfo(@PathVariable Integer id, @PathVariable String name) {
   return "ID:" + id + "   Name:" + name;
}

此时,student为url地址 加了大括号的为参数,输入 url 的时候需要将参数设置为 url路径。并且输入 url 地址时,对应的参数一个都不能省略

使用 postman 测试得:

在这里插入图片描述


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

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

相关文章

uni-app:登录与支付-- 三秒后自动跳转

三秒后自动跳转 三秒后自动跳转到登录页面 需求描述:在购物车页面,当用户点击 “结算” 按钮时,如果用户没有登录,则 3 秒后自动跳转到登录页面 在 my-settle 组件的 methods 节点中,声明一个叫做 showTips 的方法&am…

Vue:生命周期

1、定义 生命周期函数(俗称:钩子函数) 根据vue整个渲染机制,在渲染的每个关键点上,提供对应的函数,进行一些相关的业务操作。 2、四个阶段 初始阶段:beforeCreate():可以加loadi…

vue-qr 生成二维码-使用

1、vue-qr官网说明 vue-qr - npm 2、使用 2.1 安装 vue-qr npm install vue-qr --save 2.2 代码 import vueQr from vue-qr; <el-dialog title"摘要" :visible.sync"openSummary" width"700px" append-to-body> <el-row> <el…

Oracle基础(表空间、用户、授权、表、数据类型、数据导入导出等)

Oracle基础(表空间、用户、授权、表、数据类型、数据导入导出等1 创建表空间1.1 概述1.2 语法&#xff1a;1.3 示例&#xff1a;2 创建用户2.1 语法2.2 示例2.3 用户授权类型3 表的创建、修改、删除3.1 表创建3.1.1 概述3.1.2 语法3.1.3 示例3.1.4 表的数据类型3.2 表修改3.2.1…

Oracle系列之七:表的创建与管理

Oracle表的创建与管理1. 表的创建2. 表的修改3. 表中数据的增删改查4. 表的Merge5. 表的删除6. 表的重命名7. 表的索引8. 表的约束9. dual表表是Oracle数据库中最基础的存储对象&#xff0c;用于存储数据。本文主要介绍了Oracle表的创建与管理&#xff0c;包括表的创建、修改、…

图像处理:双边滤波算法

今天主要是回顾一下双边滤波&#xff0c;我曾经在这篇——图像处理&#xff1a;推导五种滤波算法中推导过它&#xff0c;其中包含了我自己写的草稿图。 目录 双边滤波算法原理 &#xff08;1&#xff09;空间域核 &#xff08;2&#xff09;值域核 理解双边滤波 空域权重​…

Reactor模型在库存指令模块中的运用

Reactor是一种高性能网络模型&#xff0c;在netty、redis、nginx、kafaka、memcached等重要组件&#xff0c;以及唯品会自研的OSP框架都有应用&#xff0c;Reactor模型在提升性能和解耦方面都做得非常好&#xff0c;其编程思想也可以运用到业务系统的开发当中&#xff0c;本文主…

VUE:常见的面试题和答案

1. Vue组件的生命周期有哪些&#xff0c;它们的执行顺序是什么? 答&#xff1a;Vue组件的生命周期包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy和destroyed等。它们的执行顺序如下&#xff1a; beforeCreate -> created ->…

21从零开始学Java之while与do-while循环的用法有什么不同?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中&#xff0c;壹哥给大家讲解了循环的概念&#xff0c;并重点给大家讲解了for循环的使用…

腾讯轻联流程运行错误如何排查问题?

我们在使用腾讯轻联时&#xff0c;会发现有些流程并没有运行成功&#xff0c;例如我们希望数据可以及时同步到腾讯文档&#xff0c;流程也有执行&#xff0c;但是却执行失败了&#xff0c;那么如何排查问题呢&#xff1f; 其中有几类常见问题 1. 流程不运行的问题请查看&…

【WCH】基于STM32F1标准库程序烧录到CH32F203中运行方法

【WCH】基于STM32标准库程序烧录到CH32F203中运行方法&#x1f4cc;相关篇《关于CH32F203程序下载方式说明》 ✨看到CH32F203手册上写的该芯片也是ARM Cortex-M3内核&#xff0c;那么上层代码应该也是兼容的&#xff0c;为例证实这一点&#xff0c;开干&#xff0c;先来一个简单…

C++---状态机模型---大盗阿福(每日一道算法2023.4.11)

注意事项&#xff1a; 建议先了解状态机的基本定义&#xff1a;状态机-百度百科。 题目&#xff1a; 阿福是一名经验丰富的大盗。趁着月黑风高&#xff0c;阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N 家店铺&#xff0c;每家店中都有一些现金。 阿福事先调查得知&…

实验手册 - 第8周DataFrame API/Spark SQL

目录标题实验1实验内容绘制散点图将数据保存到MySQL# import os # os.getcwd() import findspark findspark.init() from pyspark.sql import SparkSessionspark SparkSession.builder.getOrCreate()实验1 实验内容 通过DataFrame API或者Spark SQL对数据源进行修改列类型、…

malloc hook进行内存泄漏检测

记录下使用malloc的hook形式&#xff0c;写个小的demo&#xff0c;并记录遇到的问题 1. 实现代码&#xff1a; CMakeLists.txt和相应的memory_leak.cpp文件 cmake_minimum_required(VERSION 3.14) project(demo)set(_SRCmemory_leak.cpp)add_library(memory_leak SHARED ${_S…

不要轻视Facebook Messenger的客户服务

大多数现代品牌都意识到&#xff0c;在客户最活跃的数字渠道中保持活跃至关重要。如今全球有超过 2亿人使用社交消息应用程序与他人在线联系。特别是Facebook Messenger&#xff0c;每月有1亿用户 -占世界人口的3%&#xff01; 有这么多人使用Facebook Messenger&#xff0c;通…

UE5.1.1创建C++工程失败解决办法

闲来无事&#xff0c;更新了一下UE5.1.1&#xff0c;妈蛋创建C项目居然失败&#xff0c; 错误截图如下&#xff1a; 妈蛋&#xff0c;后面一堆乱码&#xff0c;鬼知道是啥错误&#xff01; 咋解决&#xff1f;步步高打火机&#xff0c;直接复制第一段的Running后面的代码到cmd…

仿真创新大赛—国三省一 智能鱼缸(proteus)(stm32)

⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩去年下半年参加了全国仿真创新大赛&#xff0c;也是取得了国赛三等奖&#xff0c;省赛一等奖的好成绩。 ⏩本篇文章对我们的参赛作品《智能鱼缸》做一个简介。 ⏩感…

UE4/5多人游戏详解(加入游戏会话,数值key和value,寻找IP地址)

目录 加入游戏会话 找到会话 加入会话 代码&#xff1a; 设置会话key和value 代码&#xff1a; 在寻找会话中添加匹配&#xff1a; 代码&#xff1a; 寻找IP地址&#xff1a; 代码&#xff1a; 回调函数onJoinSessionComplete实现&#xff1a; 代码&#xff1a; 测试…

分立机器基站接入核心网并调试可用解决之路

问题描述 在两台机器上&#xff0c;分别为服务器A与主机B&#xff0c;其中服务器A上部署OAI核心网&#xff0c;主机B上部署容器版ueransim。两机器用一根网线连接。两台机器的连接如此&#xff1a;但是ueransim无法接入核心网。 解决思路1——机器网卡设置到192.168.70.0网段…

常用AI网站精简版

1.ChatGPT:ChatGPThttps://chat.openai.com/ 2.Discord社区:(AI绘图midjourney)Discord | Midjourney AI生图https://discord.com/channels/@me3.文心一言: