@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)

这篇具有很好参考价值的文章主要介绍了@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、@RequestMapping  路由映射

二、参数传递

1、传递单个参数

2、传递多个参数

3、传递对象

4、后端参数重命名

5、传递数组

6、传递集合

7、传递JSON

8、获取url中的参数

9、上传图片/文件


一、@RequestMapping  路由映射

  • 指定请求访问的路径
  • 既可以修饰类,又可以修饰方法

@RequestMapping支持Get、Post、Delete等多种请求方式

@RestController
@RequestMapping("/user")
public class HelloController {
    @RequestMapping("/sayhi")
    public String sayHi(){
        return "Hi,SpringBoot";
    }

    @RequestMapping("/sayhello")
    public String sayHello(){
        return "Hello,SpringBoot";
    }
}

假设该程序在本地运行,则访问的url路径为       localhost:8080/user/sayhi

         /user即类的路径,/sayhi是方法的路径

若类上没有@RequestMapping等注解进行路由映射的话,直接端口号后加方法的路径即可

        如:    localhost:8080/sayhi

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

注意: / 可以省略,但建议企业开发时,统一加上,前加后不加

@RequestMapping注解没有写属性名,默认是value

若要限制请求方式,使用method属性  如:

@RequestMapping(value = "/sayhi",method = RequestMethod.POST)
    public String sayHi(){
        return "Hi,SpringBoot";
    }

比如上面的代码就限制了/sayhi路径的访问必须是POST请求

二、参数传递

此处我们加上类路径/user避免路由重复(读者可忽略这句话,不影响)

1、传递单个参数

    @RequestMapping("/m1")
    public String m1(String name){
        return "接收到的参数name:" + name;
    }

后端接收单个参数,此处是name,字符串类型,并返回字符串

前端传过来的请求中需要带上name参数,需要名称完全一样,参数前用?与路由隔开

浏览器直接访问:

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

Postman构造请求(本地路由既可以用127.0.0.1,也可以用localhost):

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

底层逻辑:从请求的参数中,获取参数名为name的值,并给name赋值

2、传递多个参数

    @RequestMapping("/m2")
    public String m2(String name, Integer age){
        return "接收到的参数name:" + name + " ;age:" + age;
    }

后端接收多个参数,此处是name和age,字符串类型和整形,并返回字符串

前端传过来的请求中需要带上name参数和age参数,需要名称完全一样,参数前用?与路由隔开,不同的参数间用&隔开

参数发送的顺序可以任意调换

当多个参数传值时,可以不用每个参数都传值,不传值的参数默认是null(使用包装类的前提下)

此处不用age,用Integer的原因是如果使用基本类型,必须要传值,不传会报错,所以开发时,建议使用包装类

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

底层逻辑:从请求的多个参数中,获取参数名为name和age的值,并给对应名称的数据赋值

3、传递对象

    @RequestMapping("/m3")
    public String m3(Person person){
        return "接收到的参数person:" + person.toString();
    }

Person中有以下属性

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

后端接收一个对象或对象中的属性,此处是Person,并返回字符串

前端传过来的请求中可以依然用传递参数的方式,参数需要是对象中的属性名,需要名称完全一样,参数前用?与路由隔开,不同的参数间用&隔开

可以看到,用传递多个参数的方式依然可以,后端会自动读取参数中对象中名称一样的属性,对于没有的属性则不理睬

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

底层逻辑:从请求的参数中,自动识别与对象属性名一致的参数,并给对象中对应名称的属性赋值

4、后端参数重命名

应用场景:传过来的参数名称不方便改变,但又想改变后端中自己使用的参数名称,不想用传过来的参数名称

    @RequestMapping("/m4")
    public String m4(@RequestParam(value = "name", required = false) String username){
        return "接收到的参数name:" + username;
    }

后端:此刻用了@RequestParam后,前端传过来的参数为name(value中的值),会自动赋值给username

前端:参数名需要与value中的值保持一致

注意:如果进行了重命名,就必须要使用@RequestParam注解里的名字

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

底层逻辑:此处只是运用了@RequestParam注解实现了参数重命名,传递参数的逻辑与前面几种方式一致

5、传递数组

    @RequestMapping("/m6")
    public String m6(String[] arrayParam){
        return "接收到的参数arrayParam" + Arrays.toString(arrayParam) + ", 长度" + arrayParam.length;
    }

后端:接收参数是数组类型,可接收前端传来的数组类型参数

前端:当我们请求中,同一个参数有多个时,浏览器会帮我们自动给封装成一个数组

注意:参数名需完全一致,且和后端数组名相同,对应的value可以不同

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

底层逻辑:后端正常接收数组,前端(浏览器)发送请求时,若同一个参数有多个时,会自动将其封装成一个数组,发送给后端

6、传递集合

    @RequestMapping("/m7")
    public String m7(@RequestParam(required = false) List<String> listParam){
        return "接收到的参数listParam:" + listParam + ",长度:" +listParam.size();
    }

后端:接收参数类型为集合,并加上注解@RequestParam修饰,表示后端会将前端传来的参数自动解析为集合

前端:按数组的方式进行传参,当我们请求中,同一个参数有多个时,浏览器会帮我们自动给封装成一个数组

注意:传递集合和传递数组前端传递参数的方式是没有发生改变的,改变的是后端的处理方法

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee
底层逻辑:@RequestParam表示将前端传来的参数自动解析成该注解修饰的类型(此处是集合),注解内参数意思为若前端没有传递参数,则自动将该类型赋值为null,避免空指针报错

7、传递JSON

    @RequestMapping("/m8")
    public String m8(@RequestBody Person person){
        return "接收到的参数person:" + person.toString();
    }

后端:@RequestBody注解来将请求体内容转换为一个Person对象
前端:以JSON格式来传递参数
注意:后端参数要加上@RequestBody注解进行修饰,表示自动将前端传来的参数换成需要的参数类型,传递Json数据这种传参方式被大量使用,咱数组、对象等的参数类型全部可以用JSON传递

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

底层逻辑:参数加上@RequestBody注解进行修饰,表示自动将前端传来的参数换成需要的参数类型,其实后端接收JSON参数的功能还是靠得该注解

8、获取url中的参数

    @RequestMapping("/m9/{userId}/{name}")
    public String m9(@PathVariable Integer userId, @PathVariable String name){
        return "userId:" + userId + ",name:" + name;
    }

后端:在url中用占位符占位,然后参数用@PathVariable修饰,表示从路径中取到该参数
前端:直接在url中传参,用 / 分隔
注意:可以获取一个,也可以获取多个,但是需要注意他们的顺序,请求格式必须和后端定义的url格式匹配,否则会取错数据甚至报错

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

底层逻辑: 前端直接在url中传参,用 / 分隔,后端先在url中用占位符占位,然后参数用@PathVariable修饰,表示从url中占的对应位置取得对应参数并赋值给自己的参数

9、上传图片/文件

    @RequestMapping("/m10")
    public String m10(@RequestPart MultipartFile file) throws IOException {
        // 打印文件名称
        System.out.println(file.getOriginalFilename());
        // 保存本地
        file.transferTo(new File("D:/临时,后续删除/" +file.getOriginalFilename()));
        return "success";
    }

后端:用MultipartFile类型的变量接收文件,参数使用@RequestPart注解,它用于接收文件上传
前端:直接发送文件/图片即可
注意:前端发送的文件名称必须和后端接受的参数名称完全一致,不然会报错

@requestbody前端怎么传数据,java,前端,开发语言,intellij-idea,spring boot,后端,java-ee

底层逻辑:用MultipartFile类型的变量接收文件,参数使用@RequestPart注解,它用于接收文件上传文章来源地址https://www.toymoban.com/news/detail-762149.html

到了这里,关于@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PostMan如何传递Date类型参数

    接口方式: HTTP 方 法: POST 格 式: JSON 通过这种方式传递时间,后台接收到之后需要转为 long 类型,然后转换为date类型 所以接收到值之后,需要转换类型:

    2024年02月11日
    浏览(49)
  • @ModelAttribute注解在postman中如何传递参数

    接口地址以及参数传递正确的话,就可以正常获取请求结果啦。

    2024年02月10日
    浏览(37)
  • Oracle中如何把整个表作为参数传递

    当然可以!在Oracle中,你可以使用表类型的变量来传递表作为参数。首先,你需要创建一个表类型的变量,然后在存储过程或函数中声明这个变量。接下来,你可以将实际表的数据赋值给这个变量,并在存储过程或函数中使用这个变量。   以下是一个简单的示例:   创建一

    2024年01月25日
    浏览(46)
  • 【JavaEE进阶】 Spring请求如何传递参数详解

    访问不同的路径,就是发送不同的请求.在发送请求时,可能会带⼀些参数,所以我们在学习Spring的请求时,主要是学习如何传递参数到后端以及后端如何接收. 下面博主会对传递参数进行一个详解,咱们主要是使⽤浏览器和Postman来模拟 比如博主写了以下程序 当我们运行后,用浏览

    2024年02月03日
    浏览(51)
  • Vue 中change事件除了默认参数value ,如何传递自己的参数

    vue中@change事件除了传递value默认参数,如果需要传自己的参数myprops 是有两种方法: 但是这种方式分场景,如果你的myprops在data中定义好的那么就可以传过去,如果myprops参数是像for循环里的每个item项目,那就报错,提示你在data或者method中定义该参数或者方法。 这种方法任何

    2024年02月11日
    浏览(46)
  • 【Java EE】Spring请求如何传递参数详解

    访问不同的路径,就是发送不同的请求.在发送请求时,可能会带⼀些参数,所以我们在学习Spring的请求时,主要是学习如何传递参数到后端以及后端如何接收. 下面博主会对传递参数进行一个详解,咱们主要是使⽤浏览器和Postman来模拟 当我们运行后,用浏览器进行访问 http://127.0.

    2024年04月12日
    浏览(51)
  • 如何使用postman进行参数传递以及csv数据驱动

    - 了解postman工具可以用来做什么 postman可以用来做接口测试,主要可以用来实现以下几个需求 可以快速构建我们想要发出的请求 可以保存我们已经做过的接口测试用例 可以提供响应数据比较的作用 可以把测试用例放到测试集里面去批量的执行,指定我们执行的次数,进行数

    2023年04月11日
    浏览(48)
  • Python | 爬虫的request.post如何传递json参数

    例如: 这里通过json参数传递了一个字典类型的data数据,在请求头中设置Content-Type为application/json。requests会自动将json参数转化为合法的JSON格式,并且将其作为请求体提交给服务器。注意,这里的json参数是requests库中的内置参数之一,表示将请求体数据序列化为JSON格式。 在服

    2024年02月11日
    浏览(38)
  • Simulink中传递函数transfer fcn中迟滞参数如何设置

    小编希望借助simulink中的transfer fcn传递函数对突变的信号进行平滑的处理,后来发现对于transfer fcn中分母上的一个参数直接相关,模型如下: 然后模型采用定步长运行,运行步长0.001s,运行总时长15s。  运行结果如下: 随着分母中s项前的系数越小,处理后的信号越接近原始

    2024年02月11日
    浏览(37)
  • C语言如何传递参数到函数,并从函数中返回值?

    假设我们现在要写一个函数,名字叫做\\\"吃饭\\\"。这个函数的功能是传入参数\\\"食物\\\",然后从函数中返回一个值\\\"满足程度\\\"。我们来看看如何实现吧! 我们需要写一个函数原型,声明这个函数的存在和参数的类型。嗯,函数原型就像餐厅的菜单,告诉顾客有哪些选择和怎么点菜。

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包