【Java EE】Spring请求如何传递参数详解

这篇具有很好参考价值的文章主要介绍了【Java EE】Spring请求如何传递参数详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

访问不同的路径,就是发送不同的请求.在发送请求时,可能会带⼀些参数,所以我们在学习Spring的请求时,主要是学习如何传递参数到后端以及后端如何接收.

下面博主会对传递参数进行一个详解,咱们主要是使⽤浏览器和Postman来模拟

🎍传递单个参数

@RestController
public class hello {
    @RequestMapping("/test")
    public String test(String name){
        return "接受到的参数:"+name;
    }

}

当我们运行后,用浏览器进行访问

http://127.0.0.1:8080/pt/test1?name=山顶是一定要去的

访问结果如下:
【Java EE】Spring请求如何传递参数详解,Java EE,java-ee,spring,java,mvc,spring boot
注意:

  • 如果参数名不一致,获取不到参数,默认没有传参,默认值为null

【Java EE】Spring请求如何传递参数详解,Java EE,java-ee,spring,java,mvc,spring boot

  • 如果参数类型不⼀致,是会进行报错的
@RestController
public class hello {
    @RequestMapping("/test")
    public String test(Integer name){
        return "接受到的参数:"+name;
    }
}

【Java EE】Spring请求如何传递参数详解,Java EE,java-ee,spring,java,mvc,spring boot
注意:

  • 如果使⽤基本类型来接收参数时,参数必须传(除boolean类型),否则会报500错误
@RestController
public class hello {
    @RequestMapping("/test")
    public String test(int name){
        return "接受到的参数:"+name;
    }
}

【Java EE】Spring请求如何传递参数详解,Java EE,java-ee,spring,java,mvc,spring boot

日志中也会进行报错。
【Java EE】Spring请求如何传递参数详解,Java EE,java-ee,spring,java,mvc,spring boot
建议使用包装类!!!

🌴传递多个参数

与传递单个参数一样

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

🍀传递对象

如果参数⽐较多时,⽅法声明就需要有很多形参.并且后续每次新增⼀个参数,也需要修改⽅法声明.

我们不妨把这些参数封装为⼀个对象.

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

public class Person {
    private int id;
    private String name;
    private String password;
    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 String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

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

【Java EE】Spring请求如何传递参数详解,Java EE,java-ee,spring,java,mvc,spring boot
注意

Spring会根据参数名称⾃动绑定到对象的各个属性上,如果某个属性未传递,则赋值为null(基本类型则赋值为默认初识值,⽐如int类型的属性,会被赋值为0)

🎄后端参数重命名(后端参数映射)

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

    @RequestMapping("test6")
    public String test6(@RequestParam("time") String createtime) {
        return "接收到的参数名为:" + createtime;
    }

注意:

  • 使⽤ @RequestParam 进⾏参数重命名时,请求参数只能和@RequestParam 声明的名称⼀致,才能进⾏参数绑定和赋值.
  • 使⽤ @RequestParam 进⾏参数重命名时,参数就变成了必传参数
  • 如果我们不想让他变成必传参数,我们可以通过设置@RequestParam 中的 required=false (默认为true,必传)来避免不传递时报错
    @RequestMapping("test6")
    public String test6(@RequestParam(value = "time",required = false) String createtime) {
        return "接收到的参数名为:" + createtime;
    }

🌲传递数组

Spring MVC 可以⾃动绑定数组参数的赋值

    @RequestMapping("test7")
    public String test7(String[] names) {
        return "接收到的参数名为:" + Arrays.toString(names);
    }

数组传参时,有以下几种:
1:http://127.0.0.1:8080/pt/test7?names=张三&names=李四
2:http://127.0.0.1:8080/pt/test7?names=张三%2c李四
3:http://127.0.0.1:8080/pt/test7?names=张三,李四

🎍传递集合

集合参数:和数组类似,同⼀个请求参数名有为多个

不同的时需要使⽤ @RequestParam 绑定参数关系

传参方式与上述数组传参三种方式一样

@RequestMapping("/m6")
public String method6(@RequestParam List<String> listParam){
	return "size:"+listParam.size() + ",listParam:"+listParam;
}

🌴传递JSON数据

🌸JSON概念

JSON:JavaScript Object Notation【JavaScript对象表⽰法】

JSON是⼀种轻量级的数据交互格式.它基于ECMAScript(欧洲计算机协会制定的js规范)的⼀个⼦集,采⽤完全独⽴于编程语⾔的⽂本格式来存储和表⽰数据。

简单来说:JSON就是⼀种数据格式,有⾃⼰的格式和语法,使⽤⽂本表⽰⼀个对象或数组的信息,因此JSON本质是字符串.

主要负责在不同的语⾔中数据传递和交换

🌸JSON的语法

  1. 数据在 键值对(Key/Value) 中
  2. 数据由逗号 , 分隔
  3. 对象⽤ {} 表⽰
  4. 数组⽤ [] 表⽰
  5. 值可以为对象,也可以为数组,数组中可以包含多个对象

🌸JSON的两种结构

  1. 对象:⼤括号 {} 保存的对象是⼀个⽆序的 键值对 集合.⼀个对象以左括号 { 开始,右括号 }结束。每个"键"后跟⼀个冒号 :
    ,键值对使⽤逗号 , 分隔
  2. 数组: 中括号 [ ] 保存的数组是值(value)的有序集合.⼀个数组以左中括号 [ 开始,右中括号 ] 结束,值之间使⽤逗号 , 分隔。

🌸JSON字符串和Java对象互转

JSON本质上是⼀个字符串,通过⽂本来存储和描述数据

Spring MVC框架也集成了JSON的转换⼯具,我们可以直接使⽤,来完成JSON字符串和Java对象的互转

🌸JSON的优点

  1. 简单易⽤:语法简单,易于理解和编写,可以快速地进⾏数据交换

  2. 跨平台⽀持:JSON可以被多种编程语⾔解析和⽣成,可以在不同的平台和语⾔之间进⾏数据交换和传输

  3. 轻量级:相较于XML格式,JSON数据格式更加轻量级,传输数据时占⽤带宽较⼩,可以提⾼数据传输速度

  4. 易于扩展:JSON的数据结构灵活,⽀持嵌套对象和数组等复杂的数据结构,便于扩展和使⽤

  5. 安全性:JSON数据格式是⼀种纯⽂本格式,不包含可执⾏代码,不会执⾏恶意代码,因此具有较⾼的安全性

基于以上特点,JSON在Web应⽤程序中被⼴泛使⽤,如前后端数据交互、API接⼝数据传输等

🌸传递JSON对象

接收JSON对象,需要使⽤ @RequestBody 注解

RequestBody:请求正⽂,意思是这个注解作⽤在请求正⽂的数据绑定,请求参数必须在写在请求正⽂中

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

🎋获取URL中参数@PathVariable

path variable:路径变量

和字⾯表达的意思⼀样,这个注解主要作⽤在请求URL路径上的数据绑定

    @RequestMapping("/test10/{id}/{name}")
    public String test10(@PathVariable Integer id, @PathVariable("name") String userName){
        return "解析参数id:"+id+",name:"+userName;
    }

注意:

  • 如果⽅法参数名称和需要绑定的URL中的变量名称⼀致时,可以简写,不⽤给@PathVariable的属性赋值,如上述例⼦中的id变量

  • 如果⽅法参数名称和需要绑定的URL中的变量名称不⼀致时,需要@PathVariable的属性value赋值,如上述例⼦中的userName变量

🍃上传文件@RequestPart

代码实现如下:

    @RequestMapping("/test11")
    public String getfile(@RequestPart("file") MultipartFile file) throws IOException {
        //获取⽂件名称
        String fileName = file.getOriginalFilename();
        //⽂件上传到指定路径
        file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));
        return "接收到⽂件名称为: "+fileName;
    }

🍀获取Cooki/Session

由于这部分内容较多,博主单独写了出来。链接如下:

🎄获取Header

🌸传统获取 header

    @RequestMapping("/test17")
    public String test17(HttpServletRequest request, HttpServletResponse response) {
        String userAgent = request.getHeader("User-Agent");
        return  "userAgent:"+userAgent;
    }

🌸简洁获取header

    @RequestMapping("/test18")
    public String test18(@RequestHeader("User-Agent") String userAgent) {
        return "userAgent:"+userAgent;
    }

⭕总结

感谢大家的阅读,希望得到大家的批评指正,和大家一起进步,与君共勉!文章来源地址https://www.toymoban.com/news/detail-848720.html

到了这里,关于【Java EE】Spring请求如何传递参数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 图文详解Java参数传递类型

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作

    2024年02月17日
    浏览(35)
  • 【Spring教程28】Spring框架实战:从零开始学习SpringMVC 之 请求与请求参数详解

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《PostMan工具的安装与使用技巧》 前面我们已经完成了入门案例相关的知识学

    2024年02月03日
    浏览(69)
  • Spring MVC学习之——如何接收请求传过来的参数

    Springmvc中,接收页面提交的数据是通过方法形参来接收: 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换器)在特殊情况下需要自定义converter,如对日期数据 直接接收即可

    2024年01月20日
    浏览(45)
  • @PathVariable、@PathParam、@RequestBody接收axios传递的请求参数;后端接收前端传递过来的参数

    目录 一、前言 :Content-Type 类型    (1)、 application/x-www-form-urlencoded 类型 (2)、application/json 类型 二、@PathVariable 二、@PathParam  三、@RequestBody  四、后端发送数据给前端 五、注意事项         请求参数以key-value的形式传输         请求参数以JOSN串的形式传输         ax

    2024年01月18日
    浏览(46)
  • 【SpringMVC】参数传递与用户请求和响应

    目录 一、Postman 工具使用 1.1 Postman安装 1.2 Postman的使用 1.2.1 创建WorkSpace工作空间 1.2.2 创建请求   二、参数传递 2.1 添加 Slf4j 依赖 2.2 普通传参 知识点1:@RequestMapping 知识点2:@RequestParam 2.3 路径传参 知识点3:@PathVariable 2.4 Json数据传参  知识点4:@RequestBody   三、响应 3.1 响

    2024年02月09日
    浏览(44)
  • Spring MVC学习随笔-控制器(Controller)开发详解:接受客户端(Client)请求参数

    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 💡 1. 接受客户端(client)请求参数[讲解]2. 调用业务对象3. 页面跳转 所谓简单变量:指的就是8种基本类型+String这些类型的变量。把这些类型的变量,作为控制器方法的形参,用于接受

    2024年02月05日
    浏览(51)
  • 小程序 POST 请求传递 FormData 格式参数

    向服务端发起POST请求时,有些接口的参数需要以 FormData 形式传递。 小程序中没有FormData对象,使用 let formdata = new FormData() 创建对象,会报错 FormData is not defined 1、配置请求头header: ‘content-type’: ‘application/x-www-form-urlencoded; charset=UTF-8’ 2、参数修改为 字符串拼接形式:a

    2024年02月14日
    浏览(48)
  • http之GET请求和POST请求的传递参数的方式

    get: 情况1:接口正常返回 code,data,message ,且无需传递参数 (vu3) 情况2: 需要将参数拼接到url地址上 (vue3)   情况3 需要传递参数,query 传参 (vue3) 情况4 既有query传参也有path传参 post 情况1 接口返回的数据没有使用data包裹,这种情况一般取不到数据,我们需要用 ext

    2024年02月16日
    浏览(41)
  • 若依框架前后端各个请求方式参数传递示例

    封装方法getBanner getBanner方法调用(customerBannerId是一个数字) 后端接口(@PathVariable 注解取得请求路径中的参数,注意此处的三个参数名要一致) 封装方法getBanner getBanner 方法调用(customerBannerId是一个对象,这里属性名与属性值一致,简写) 后端接口(前端传递的对象的属性

    2024年02月03日
    浏览(50)
  • Postman中POST请求传递date类型参数

    1.Pre-request Script下配置时间格式: 2.body — json参数设置,在这里引用上边定义的时间格式:

    2024年02月09日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包