iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在SpringBoot中设置传入的参数
  • 653
分享到

怎么在SpringBoot中设置传入的参数

2023-06-06 14:06:34 653人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关怎么在SpringBoot中设置传入的参数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。设置参数是否为必要参数@RequestParam(requir

本篇文章给大家分享的是有关怎么在SpringBoot中设置传入的参数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

设置参数是否为必要参数

@RequestParam(required = false)

补充:SpringBoot 开发案例之参数传递的正确姿势

前言

开发这么多年,肯定还有不少小伙伴搞不清各种类型的参数是如何传递的,很多同学都是拿来即用,复制粘贴一把撸,遇到问题还是一脸懵逼。

姿势

学习参数传递的正确姿势,先说怎么做,再说为什么,本质上还是复制粘贴一把撸,问题是你想问不想问为什么!

传递

用户登录

前端代码:

var param = { "username": "admin", "passWord": "admin"}$.ajax({ url: "/sys/login", data: param, type: "post", dataType: "JSON", success: function(data) { }});

后端代码:

@RestController@RequestMapping("/sys")public class LoginController { private static final Logger logger = LoggerFactory.getLogger(LoginController.class);  @PostMapping("/login") public Result login(String username, String password){  logger.info("用户登录"+username);  //业务逻辑  return Result.ok("登录成功"); }}

当然,你也可以这么实现,@RequestParam(value="username", required=true) ,required 默认为 true,如果前台不传递此参数,后台会报错。如果设置为 false,如果不传,默认为 null。

@PostMapping("/login")public Result login(@RequestParam(value="username", required=true) String username,     @RequestParam(value="password", required=true) String password){ logger.info("用户登录"+username); //业务逻辑 return Result.ok("登录成功");}

用户注册

前端代码,提交方式与登录基本保持一致。

后端代码:

用一个对象来接收前台参数,一般后端有对应的实体类。

@PostMapping("/reGISter")public Result register(SysUser user){ logger.info("{},用户注册",user.getUsername()); //业务逻辑 return Result.ok("注册成功");}

多参数无实体一

前端代码:

var param = { "title": "爪哇笔记", "content": "一个有趣的公众号", "author": "小柒2012"}param = jsON.stringify(param);$.ajax({ url: "/sys/multiParameter", data: param, type: "post", contentType: "application/json", dataType: "json", success: function(data) { }});

后端实现:

@PostMapping("/multiParameter")public Result register(@RequestBody Map<String,Object> map){ logger.info("多参数传递:{},{}",map.get("title"),map.get("content")); //业务逻辑 return Result.ok("接收多参数成功");}

多参数无实体二

前端代码:

var param = { "title": "爪哇笔记", "content": "一个有趣的公众号", "author": "小柒2012"}$.ajax({ url: "/sys/multiParameter", data: param, type: "post", dataType: "json", success: function(data) { }});

后端实现:

@PostMapping("/multiParameter")public Result register(@RequestParam Map<String,Object> map){ logger.info("多参数传递:{},{}",map.get("title"),map.get("content")); //业务逻辑 return Result.ok("接收多参数成功");}

传递数组

前端代码:

var param = { "ids": [1, 2, 3]}$.ajax({ url: "/sys/array", data: param, type: "post", dataType: "json", success: function(data) { }});

后端实现:

@PostMapping("array")public Result array(@RequestParam(value = "ids[]") Integer[] ids) { logger.info("数据{}", Arrays.asList(ids)); //业务逻辑 return Result.ok();}

传递集合

前端代码与传递数组保持一致。

后端实现:

@PostMapping("array")public Result array(@RequestParam(value = "ids[]") List<Integer> ids) { logger.info("数据{}", ids.toString()); //业务逻辑 return Result.ok();}

传递集合实体对象

比如,后端想接收一个实体对象集合 List<SysUser>

前端代码:

var list = [];list.push({ "username": "小柒2012", "mobile": "17762288888"});list.push({ "username": "小柒2013", "mobile": "17762289999"});$.ajax({ url: "/sys/listUser", data: JSON.stringify(list), type: "post", contentType: "application/json", dataType: "json", success: function(data) { }});

后端代码:

@PostMapping("listUser")public Result listUser(@RequestBody List<SysUser> list) { logger.info("数据{}", list.size()); list.forEach(user->{  //输出实体对象  System.out.println(user.getUsername()); }); //业务逻辑 return Result.ok();}

传递集合实体对象一对多

比如,一个用户有多个角色 List<SysRole> roleList

前端代码:

var roleList = [];roleList.push({ "roleSign": "admin", "roleName": "管理员"});roleList.push({ "roleSign": "user", "roleName": "普通用户"});var list = [];var user = { "username": "小柒2012", "mobile": "17762288888"};user.roleList = roleList;list.push(user);$.ajax({ url: "/sys/listUserRole", data: JSON.stringify(list), type: "post", contentType: "application/json", dataType: "json", success: function(data) { }});

后端实现:

@PostMapping("listUserRole")public Result listUserRole(@RequestBody List<SysUser> list) { logger.info("数据{}", list.size()); list.forEach(user->{  List<SysRole> roleList = user.getRoleList();  roleList.forEach(role->{   System.out.println(role.getRoleName());  }); }); return Result.ok();}

炒鸡复杂

传输对象有实体,有集合,有各种类型的数据,这时候最简单的方式就是传递 Key-Value 结构的 JSON 字符串,后台 Map 类型接收,然后通过FastJson的 JSON.parseObject() 和 JSON.parseArray() 方法转化为对应的实体或者集合。

 String user = parseMap.get("user").toString(); SysUser sysUser = JSON.parseObject(user,SysUser.class); String contractClause = parseMap.get("rules").toString(); List<Rule> ruleList = JSON.parseArray(contractClause,Rule.class);

RESTful 风格

比如,访问某篇文章:

@GetMapping("article/{id}")public void article(@PathVariable("id") String id) { logger.info("文章{}",id); //业务逻辑}

原则

记住一下几点:

@RequestBody注解,必须与 contentType 类型application/json配合使用。

@RequestParam注解,必须与 contentType 类型application/x-www-fORM-urlencoded配合使用,其为默认类型。

JSON.stringify() 把对象类型转换为字符串类型,一般配合 @RequestBody注解和contentType 类型application/json使用。

扩展

在以上只涉及了两种 contentType 类型,其实还有两种常见的类型:

multipart/form-data

一般用于表单文件上传,必须让 form 的 enctype 等于这个值。

<form action="/upload" method="post" enctype="multipart/form-data"> <input type="text" name="description" value="爪哇笔记,一个神奇的公众号"> <input type="file" name="myFile"> <button type="submit">Submit</button></form>

text/xml

做过微信支付的小伙伴一定会知道,微信就喜欢用这种方式,去年还发生过 XXE 漏洞,在解析XML文档时,解析器通过 ENTITY 扩展的功能,读取本地受保护的文件,并且使用扩展功能将受保护的文件发送到远程地址。

以上就是怎么在springBoot中设置传入的参数,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 怎么在SpringBoot中设置传入的参数

本文链接: https://www.lsjlt.com/news/247485.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在SpringBoot中设置传入的参数
    本篇文章给大家分享的是有关怎么在SpringBoot中设置传入的参数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。设置参数是否为必要参数@RequestParam(requir...
    99+
    2023-06-06
  • axios中怎么使用params传参传入数组
    本篇文章给大家分享的是有关axios中怎么使用params传参传入数组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如下:changeList...
    99+
    2022-10-19
  • Springboot中怎么注入带参数的构造函数
    本篇文章给大家分享的是有关Springboot中怎么注入带参数的构造函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用@Configuration+ @Bean注解来实现注...
    99+
    2023-06-03
  • python中怎么向模块传入参数
    这篇“python中怎么向模块传入参数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python中怎么向模块传入参数”文章吧...
    99+
    2023-06-30
  • Java怎么向主函数main中传入参数
    小编给大家分享一下Java怎么向主函数main中传入参数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!向主函数main中传入参数String[ ] args的含义...
    99+
    2023-06-29
  • Matlab中plot参数怎么设置
    在Matlab中,可以使用不同的参数来设置plot函数的行为和外观。下面是一些常见的参数设置:1. x和y:用于指定要绘制的数据点的...
    99+
    2023-09-20
    Matlab
  • jquery中lazyload.js参数怎么设置
    在jQuery的lazyload.js插件中,可以通过设置不同的参数来自定义懒加载的行为。下面是一些常见的参数设置:1. `thre...
    99+
    2023-09-21
    jquery
  • Oracle中怎么设置optimizer_mode 参数
    这篇文章给大家介绍Oracle中怎么设置optimizer_mode 参数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 Oracle 在执行SQL语句时...
    99+
    2022-10-18
  • oracle中怎么设置UTL_FILE_DIR参数
    oracle中怎么设置UTL_FILE_DIR参数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  or...
    99+
    2022-10-18
  • Netbeans中怎么设置JVM参数
    本篇文章为大家展示了Netbeans中怎么设置JVM参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Netbeans中设置JVM参数对ictclas4j进行了比较大的改动,我希望能把分词的速度大...
    99+
    2023-06-17
  • Metasploit中怎么设置LHOST参数
    本篇文章为大家展示了Metasploit中怎么设置LHOST参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Metasploit设置LHOST参数技巧当用户使用Metasploit框架中的模块时,...
    99+
    2023-06-05
  • Vuex中怎么使用action传入多个参数
    Vuex中怎么使用action传入多个参数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。解决办法:将第二个参数以对象的放式提交...
    99+
    2022-10-19
  • 怎么在Shell脚本中通过参数名传递参数
    这期内容当中小编将会给大家带来有关怎么在Shell脚本中通过参数名传递参数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。#!/bin/bashwhile getopts i:o:p:s...
    99+
    2023-06-09
  • MySQL中怎么设置类型参数
    本篇文章给大家分享的是有关MySQL中怎么设置类型参数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。(一)连接  连接通常来自Web服务器,下...
    99+
    2022-10-18
  • 怎么在python中导入一个需要传参的模块
    怎么在python中导入一个需要传参的模块?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。文件test1.pyimport argparsefrom argp...
    99+
    2023-06-15
  • 怎么在 Fedora 30中设置内核命令行参数
    这篇文章将为大家详细讲解有关怎么在 Fedora 30中设置内核命令行参数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在调试或试验内核时,向内核命令行添加选项是一项常见任务。即将发布的 Fedora 3...
    99+
    2023-06-05
  • Mysql 5.5中怎么设置数据库参数
    Mysql 5.5中怎么设置数据库参数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。--全局级别mysql> show global...
    99+
    2022-10-18
  • mysql下的max_allowed_packet参数怎么设置
    本篇内容主要讲解“mysql下的max_allowed_packet参数怎么设置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql下的max_allowed_packet参数怎么设置”吧!...
    99+
    2023-06-29
  • mysql参数中innodb_buffer_pool_size大小怎么设置
    这篇文章主要为大家展示了“mysql参数中innodb_buffer_pool_size大小怎么设置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql参数...
    99+
    2022-10-18
  • 怎么在javascript中设置只能输入数字
    本篇文章给大家分享的是有关怎么在javascript中设置只能输入数字,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。javascript设置只能输入数字的方法:新建一个html...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作