@RequestParam、@PathVariable、@RequestBody、@RequestAttribute详解

news2024/11/24 7:33:25

一、@RequestParam注解

作用:用于将指定的请求参数赋值给方法中的形参。
属性:
1)value:请求参数名(必须配置)
2)required:是否必需,默认为 true,即请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)
3)defaultValue:设置默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false(可选配置)

用法:

    @ResponseBody
    @GetMapping("/RequestParam")
    public Map test(@RequestParam("username") String username,@RequestParam("password") List<String > password){
        Map map=new HashMap();
        map.put("username",username);
        map.put("password",password);
        return map;
    }

注意:GET请求时,请求的参数是拼接在请求地址URL后面的
在这里插入图片描述
也可以通过一个@RequestParam注解与Map集合类型参数同时获取多个参数:

    @ResponseBody
    @GetMapping("/RequestParam")
    public Map test(@RequestParam Map<String,String> map1){
        Map map=new HashMap();
        map.put("test",map1);
        return map;
    }

在这里插入图片描述

二、@PathVariable注解

1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;post需要token来防止跨站请求漏洞。

@PathVariable注解在应用时,在@RequestMapping请求路径中,将需要传递的参数用花括号{}括起来,然后,通过@PathVariable(“参数名称”)获取URL中对应的参数值。如果@PathVariable标明参数名称,则参数名称必须和URL中的参数名称保持一致。
用法:

    @ResponseBody
    @GetMapping("/PathVariable/{name}/{age}")
    public Map test(@PathVariable("name") String name,@PathVariable("age") Integer age){
        Map map=new HashMap();
        map.put("name",name);
        map.put("age",age);
        return map;
    }

在这里插入图片描述
也可以使用一次注解获取多个参数:

    @ResponseBody
    @GetMapping("/PathVariable/{name}/{age}")
    public Map test(@PathVariable  Map<String,String> map3){
        Map map=new HashMap();
        map.put("params",map3);
        return map;
    }

三、@RequestBody注解

主要用来接收前端传递给后端的json字符串中的数据,也就是请求体中的数据,GET方式无请求体,所以使用**@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。**

在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

    @ResponseBody
    @PostMapping("/save")
    //获取请求体参数
    public String getRequestBody(@RequestBody String body){
        return body;
    }

四、@RequestAttribute注解:

获取请求域中所保存的属性的值。
用法:首先向浏览器发起goto请求并添加自定义值到请求域中,再转发到success请求去获取这些请求域中的值。

    @GetMapping("/goto")
    public String toSuccess(HttpServletRequest request){
        request.setAttribute("msg","成功了!");
        request.setAttribute("code",200);
        return "forward:/success";
    }
    //使用@RequestAttribute注解获取请求域中的值与//不使用注解获取请求域中的值
    @GetMapping("/success")
    public String success(@RequestAttribute("msg")String msg,
                          @RequestAttribute("code") Integer code,
                          HttpServletRequest request){
        Object msg1 = request.getAttribute("msg");
        Map map=new HashMap();
        map.put("msg",msg);
        map.put("code",code);
        System.out.println(map);
        System.out.println(msg1);
        return "success";
    }

在这里插入图片描述

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

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

相关文章

GESP认证第四次考试百分榜考生名单及学校

考生姓名 所在学校 编程语言 得分 谢秉修 上海市民办华育中学 C 八级 100 张洪森 淄博市张店区第八中学 C 四级 100 高希文 宜兴市实验中学 C 四级 100 窦铭泽 温州市实验中学教育集团府东分校 C 四级 100 袁…

浅析 fuse kernel mmap write 过程及性能问题

前言 最近在项目里面用到了fuse文件系统&#xff0c;在使用过程中遇到了一个内核在做mmap write的一个bug&#xff0c;目前并没有从根本上解决这个bug&#xff0c;而是通过修改fuse kernel module的一些参数&#xff0c;绕开了这个bug。这里记录一下这个问题&#xff0c;并顺便…

学会这个插件,职业生涯少写 1w 行代码。

前言 学会这个插件&#xff0c;职业生涯少写 1w 行代码。 与前端对接、与后端对接、与数据对接、与第三方对接等等。这些工作发生在大家的整个工作周期中&#xff0c;其中有些工作都是重复性的&#xff0c;而且是机械的。 所以今天给大家推荐一款非常实用 IDEA 插件&#xf…

【Python】基于ORM的SqlAlchemy操纵数据库代码实现

说明 ORM&#xff0c;全称Object-Relational Mapping&#xff0c;即对象-关系映射&#xff0c;是一种程序设计技术&#xff0c;用于在面向对象编程语言和关系数据库之间建立对应关系。它的主要目的是让开发者能够使用面向对象的方式操作数据库&#xff0c;而不必过多地关注数据…

法线贴图实现地形模型皱褶、凹凸不平的纹理效果

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 法线贴图在3D建模中扮演着重要的角色&#xff0c;它通过模拟表面的微…

Qt 国际化——创建中英文翻译步骤

Qt 国际化——创建中英文翻译步骤 说明&#xff1a;之前我的csdn博客&#xff0c;第一篇文章发表的就是Qt国际化的文章&#xff08;点击打开&#xff09;&#xff0c;写的也过于简单了&#xff1a; 今天&#xff0c;这篇文章再详细的记录下&#xff0c;中英文翻译的步骤。 一…

2024年区块链发展趋势

在快节奏的技术领域&#xff0c;区块链生态系统是创新的灯塔&#xff0c;不断发展和塑造数字景观。当我们迈入2024年时&#xff0c;必须通过了解关键的区块链发展趋势来保持领先地位&#xff0c;这些趋势将重新定义方式我们与去中心化系统交互。 1、互操作性&#xff1a;弥合区…

Day67力扣打卡

打卡记录 美丽塔 II&#xff08;前缀和 单调栈&#xff09; 链接 class Solution:def maximumSumOfHeights(self, maxHeights: List[int]) -> int:n len(maxHeights)stack collections.deque()pre, suf [0] * n, [0] * nfor i in range(n):while stack and maxHeights…

蔡司光学为山区孩子送光明,照亮未来之路

本月13日&#xff0c;蔡司光学携手德兴市科学技术协会、江西明眸贸易有限公司、德兴市妇幼保健院及德兴温视堂眼视中心&#xff0c;在江西上饶德兴市昄大学校内举办了“为边远山区孩子送光明”活动&#xff0c;在寒冷冬日为偏远山区的孩子送去冬日温暖&#xff0c;以公益之力照…

【中小型企业网络实战案例 一】规划、需求和基本配置

热门IT技术【视频教程】https://xmws-it.blog.csdn.net/article/details/134398330?spm1001.2014.3001.5502 案例拓扑图 案例需求 在中小园区中&#xff0c;S5735通常部署在网络的接入层&#xff0c;S8700通常部署在网络的核心&#xff0c;出口路由器一般选用AR系列路由器。 …

SQL进阶理论篇(十七):数据库主从同步的原理

文章目录 简介为什么需要主从同步主从同步的原理总结参考文献 简介 以MySQL数据库为例&#xff0c;在实际生产中&#xff0c;我们会如何对MySQL数据库进行性能优化呢&#xff1f; 比如说配合上Redis做缓存。Redis是一种高性能的内存数据库&#xff0c;而MySQL是一种基于磁盘文…

C# 使用MSTest进行单元测试

目录 写在前面 代码实现 执行结果 写在前面 MSTest是微软官方提供的.NET平台下的单元测试框架&#xff1b;可使用DataRow属性来指定数据&#xff0c;驱动测试用例所用到的值&#xff0c;连续对每个数据化进行运行测试&#xff0c;也可以使用DynamicData 属性来指定数据&…

计算机网络(4):网络层

网络层提供的两种服务 虚电路服务&#xff08;Virtual Circuit Service&#xff09;和数据报服务&#xff08;Datagram Service&#xff09;是在网络层&#xff08;第三层&#xff09;提供的两种不同的通信服务。它们主要区别在于建立连接的方式和数据传输的方式。 虚电路服务…

[图像和LiDAR点云的可微分配准]

文章目录 概要主要贡献内容概述实验小结 概要 不同模态之间的配准&#xff0c;例如来自摄像机的2D图像和LiDAR的3D点云之间的配准&#xff0c;是计算机视觉和机器人领域中至关重要的任务。 以往的方法通常通过匹配神经网络学习到的点和像素模式来估计2D-3D对应关系&#xff0…

听GPT 讲Rust源代码--src/tools(15)

File: rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/mbe/src/token_map.rs文件的作用是实现了一个能够将输入的文本映射为标记的结构。具体来说&#xff0c;它定义和实现了几个结构体&#xff08…

PolarDB-X、OceanBase、CockroachDB、TiDB二级索引写入性能测评

为什么要做这个测试 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异。二级索引必须是强一致的&#xff0c;因此索引的写入需要与主键的写入放在一个事务当中&#xff0c;事务的性能是二级索引性能的基础。 目前市面上的分布式数据库中&#xff0c;从使用体验的角度看…

178. 第K短路(A*启发式算法)

178. 第K短路 - AcWing题库 给定一张 N 个点&#xff08;编号 1,2…N&#xff09;&#xff0c;M 条边的有向图&#xff0c;求从起点 S 到终点 T 的第 K 短路的长度&#xff0c;路径允许重复经过点或边。 注意&#xff1a; 每条最短路中至少要包含一条边。 输入格式 第一行包…

Istio 社区周报(第一期):2023.12.11 - 12.17

欢迎来到 Istio 社区周报 Istio 社区朋友们&#xff0c;你们好&#xff01; 我很高兴呈现第一期 Istio 社区周报。作为 Istio 社区的一员&#xff0c;每周我将为您带来 Istio 的最新发展、有见地的社区讨论、专业提示和重要安全新闻内容。 祝你阅读愉快&#xff0c;并在下一期中…

❀My虚拟机上的ftp服务器搭建(centos)❀

❀My虚拟机上的ftp服务器搭建(centos)❀ 在CentOS上搭建FTP服务器可以使用vsftpd软件&#xff0c;下面是详细的搭建教程&#xff1a; ①安装vsftpd软件 在终端中输入以下命令进行安装&#xff1a; sudo yum install vsftpd ②配置vsftpd 打开vsftpd的配置文件&#xff0c;…

Java_集合进阶Set集合

少年没有乌托邦&#xff0c;心向远方自明朗 集合进阶&#xff08;Set、Map集合&#xff09; 一、Set系列集合 1.1 认识Set集合的特点 Set集合是属于Collection体系下的另一个分支&#xff0c;它的特点如下图所示 下面我们用代码简单演示一下&#xff0c;每一种Set集合的特…