【SpringBoot】获取参数

news2024/12/25 9:26:43

获取参数

  • 传递单个参数
  • 传递多个参数
  • 传递对象
  • 后端参数重命名
  • 传递数组
  • 传递 json 数据
  • 获取 URL 中参数
  • 上传文件
  • 获取 cookie 和 session
    • 获取cookie
    • 获取session

传递单个参数

@RequestMapping("/user")
@RestController
public class UserController {

    // 传递单个参数
    @RequestMapping("/r1")
    public String r1(String name) {
        return "name: " + name;
    }
}

运行结果:

在这里插入图片描述

传递多个参数

@RequestMapping("/user")
@RestController
public class UserController {

    // 传递多个参数
    @RequestMapping("/r2")
    // 对于参数可能为空的数据,建议使用包装类
    public String r2(String name, Integer age) {
        return "name: " + name + ", age: " + age;
    }
}

在这里插入图片描述

传递对象

首先 定义一个 UserInfo 类:

public class UserInfo {
    int id;
    String name;
    int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

@RequestMapping("/user")
@RestController
public class UserController {

    // 传递多个参数
    @RequestMapping("/r3")
    public String r3(UserInfo userInfo) {
        return userInfo.toString();
    }
}

在这里插入图片描述

后端参数重命名

若前端传递参数使用 name,而后端使用 username 接收,这就会出现接收不到参数的情况:

在这里插入图片描述

此时,我们可以使用 @RequestParam 来重命名前后端的参数值:

在这里插入图片描述

如果没有传递参数则会报错:

在这里插入图片描述

但在实际应用中,可能不需要传递这个参数,但又要不报错,则可以使用如下方式使参数为非必传:

在这里插入图片描述

传递数组

在这里插入图片描述

传递 json 数据

@RequestMapping("/user")
@RestController
public class UserController {

    // 传递 json数据
    @RequestMapping("/r8")
    // @RequestBody 用于将请求中的数据(如json、xml等格式)转换成 java 对象,并完成数据绑定
    public String r8(@RequestBody UserInfo userInfo) {
        return userInfo.toString();
    }
}

这里使用的工具是 postman:
在这里插入图片描述

获取 URL 中参数

在这里插入图片描述
在这里插入图片描述

上传文件

    // 上传文件
    @RequestMapping("/r7")
    public String r7(MultipartFile file) throws IOException {
        // 获取文件名称
        String fileName = file.getOriginalFilename();
        // 文件上传到指定路径
        file.transferTo(new File("F:/Desktop/tmp/" + fileName));
        return "文件名称:" + fileName;
    }

在这里插入图片描述

若报错文件过大,则可到配置文件中作如下修改:

在这里插入图片描述

获取 cookie 和 session

简单地说,cookie 和 session 都是用来保存用户登录的会话信息,避免后续操作还要用户登录,而 cookie 是客户端(浏览器)的保存机制,session 则是服务器端的保存机制。

获取cookie

传统方式获取:

@RestController
@RequestMapping("/request")
public class RequestController {

    @RequestMapping("/getCookie")
    public String getCookie(HttpServletRequest request) {
        for (Cookie cookie : request.getCookies()) {
            System.out.println(cookie.getName() + ": " + cookie.getValue());
        }
        return "获取cookie成功";
    }
}

在这里插入图片描述

使用注解方式获取 cookie:

@RequestMapping("/getCookie2")
// 获取所有cookie中名为name的cookie
public String getCookie2(@CookieValue("name") String name) {
    return name;
}

在这里插入图片描述

获取session

先手动设置 session:

@RequestMapping("setSession")
public String setSession(HttpServletRequest request) {
    HttpSession session = request.getSession();
    session.setAttribute("username", "zhangsan");
    return "session设置成功";
}

在这里插入图片描述

传统方式获取 session:

@RequestMapping("getSession")
public String getSession(HttpServletRequest request) {
    HttpSession session = request.getSession();
    String username = (String) session.getAttribute("username");
    return "username:  " + username;
}

在这里插入图片描述

使用注解方式获取 session:

    @RequestMapping("getSession2")
    public String getSession2(@SessionAttribute("username") String name) {
        return "name:" + name;
    }

在这里插入图片描述

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

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

相关文章

力扣 | 160. 相交链表

import ListNodeInfo.ListNode;import java.util.HashSet; import java.util.Set;public class Problem_160_IntersectionOfTwoLinkedList {//双指针方法 public ListNode getIntersectionListNode(ListNode headA, ListNode headB){if(headA null || headB null) return nul…

S32K324 CANFD报文接收超限分析

文章目录 前言问题描述原因分析问题处理总结 前言 随着汽车软件复杂度越来越高,传输的数据越来越多,CAN总线到CANFD总线已经是发展的必然了。CANFD总线中单个报文ID可以传递至多64byte数据,对CAN Driver来说,所需的MCU资源也将变…

数据集学习

1,CIFAR-10数据集 CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。 数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机…

Ubuntu桌面系统安装成功后的简单配置

目录 更换软件源设置系统时间同步 更换软件源 本文使用的换源方法仅限于桌面版 前提有网络连接,能够访问互联网 在Ubuntu18.04桌面版中,点击左下角“显示应用程序”,搜索“软件更新器”,点击进入。 暂时不要点击立即安装&#xff…

ES6: promise对象与回调地狱

ES6: promise对象与回调地狱 一、回调地狱二、Promise概述三、Promise的组成四、用函数封装Promise读取文件操作 一、回调地狱 在js中大量使用回调函数进行异步操作,而异步操作什么时候返回结果是不可控的,所以希望一段程序按我们制定的顺序执…

免费ssl证书能一直续签吗?如何获取SSL免费证书?

免费SSL证书是否可以一直续签。我们需要了解SSL证书的基本工作原理。当你访问一个使用HTTPS协议的网站时,该网站实际上在使用一个SSL证书。这个证书相当于一个数字身份证明,它验证了网站的真实性和安全性。而这个证明是由受信任的第三方机构——通常是证…

Unity之C#面试题(二)

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之C#面试题(二) TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取&a…

配置交换机SSH管理和端口安全——实验2:配置交换机端口安全

实验目的 通过本实验可以掌握: 交换机管理地址配置及接口配置。查看交换机的MAC地址表。配置静态端口安全、动态端口安全和粘滞端口安全的方法 实验拓扑 配置交换机端口安全的实验拓扑如图所示。 配置交换机端口安全的实验拓扑 实验步骤 (1&#x…

EasyPoi表格导入添加校验

EasyPoi表格导入添加校验 项目添加maven依赖实体类自定义校验controller测试结果 项目添加maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2…

【目标检测数据集】VOC2007 数据集介绍

一、介绍 VOC 数据是 PASCAL VOC Challenge 用到的数据集&#xff0c;官网&#xff1a;http://host.robots.ox.ac.uk/pascal/VOC/ 备注&#xff1a;VOC数据集常用的均值为&#xff1a;mean_RGB(122.67891434, 116.66876762, 104.00698793) Pytorch 上通用的数据集的归一化指…

(三)ffmpeg 解码流程以及函数介绍

一、视频解码流程 二、函数介绍 1.avformat_network_init 函数作用&#xff1a; 执行网络库的全局初始化。这是可选的&#xff0c;不再推荐。 此函数仅用于解决旧GnuTLS或OpenSSL库的线程安全问题。如果libavformat链接到这些库的较新版本&#xff0c;或者不使用它们&#…

AI大模型探索之路-应用篇1:Langchain框架概述—快速构建大模型应用

目录 一、什么是LangChain&#xff1f; 二、LangChain解决了哪些问题&#xff1f; 三、LangChain总体架构 四、代码实践样例 总结 一、什么是LangChain&#xff1f; 为大模型应用提供简便之道。 LangChain&#xff0c;专为构建庞大的语言模型应用程序设计的框架&#xff0…

神级浏览器,大小不到2MB

今天分享2个神级浏览器&#xff0c;大小不到2MB&#xff0c;第一个是崇尚速度与简约的手机浏览器&#xff0c;支持广告拦截、插件定制、主题自定义等功能 https://github.com/tuyafeng/Via &#xff0c;安装包大小不过2MB。 资源嗅探可以很方便的下载网页视频&#xff1a; 第2个…

Ubuntu 22.04 安装 zabbix

Ubuntu 22.04 安装 zabbix 1&#xff0c;Install Zabbix repository2&#xff0c;安装Zabbix server&#xff0c;Web前端&#xff0c;agent3&#xff0c;安装mysql数据库3.1 创建初始数据库3.2 导入初始架构和数据&#xff0c;系统将提示您输入新创建的密码。3.3 在导入数据库架…

尚硅谷html5+css3(3)布局

1.文档流normal flow -网页是一个多层结构 -通过CSS可以分别为每一层设置样式 -用户只能看到最顶层 -最底层&#xff1a;文档流&#xff08;我们所创建的元素默认都是从文档流中进行排列&#xff09; <head><style>.box1 {background-color: blue;}/*它的父元…

今日arXiv最热大模型论文:清华大学发布,ChatGML又添新功能,集成“自我批评”,提升数学能力

引言&#xff1a;数学问题解决在大语言模型中的挑战 在当今的人工智能领域&#xff0c;大语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;已经在理解和生成人类语言方面取得了显著的进展。这些模型在文本摘要、问答、角色扮演对话等多种语言任务上展现…

JVM性能调优——OOM分类及解决方案

文章目录 1、概述2、OOM案例1&#xff1a;堆内存溢出3、OOM案例2&#xff1a;元空间溢出4、OOM案例3:GC overhead limit exceeded5、OOM案例4&#xff1a;线程溢出6、小结 在工作中会经常遇到内存溢出(Out Of Memory,OOM)异常的情况&#xff0c;每当遇到OOM&#xff0c;总是让人…

今天我们来聊一聊Java中的Semaphore

写在开头 在上几天写《基于AQS手写一个同步器》时&#xff0c;很多同学留言说里面提到的Semaphore&#xff0c;讲得太笼统了&#xff0c;今天趁着周末有空&#xff0c;咱们就一起详细的学习和梳理一把 Semaphore。 什么是Semaphore&#xff1f; 在前面我们讲过的synchronize…

【计算机毕业设计】人事管理系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

【刷题】代码随想录算法训练营第十一天|20、有效的括号,1047、删除字符中的所有相邻重复项,150、逆波兰表达式求值

目录 20、有效的括号1047、删除字符中的所有相邻重复项150、逆波兰表达式求值 20、有效的括号 讲解&#xff1a;https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.html 括号匹配是使用栈解决的经典问题。 三种不匹配&#xff1a;第一种是缺少匹…