【JavaEE】_Spring MVC项目之使用对象传参

目录

[1. 使用对象传参](#1. 使用对象传参)

[2. 后端参数重命名问题](#2. 后端参数重命名问题)

[2.1 关于@RequestParam注解](#2.1 关于@RequestParam注解)


本专栏关于Spring MVC项目的单个及多个参数传参一文中,已经介绍过了对于不同个数的参数传参问题,原文链接如下:

【JavaEE】_Spring MVC 项目单个及多个参数传参-CSDN博客https://blog.csdn.net/m0_63299495/article/details/136436410

如文中所述,当传递的参数个数与类型不同时,就需要频繁修改。

这于前后端配合是非常不便的,在Spring MVC项目中,常使用对象进行传参:

1. 使用对象传参

现创建 Person class, 令目录如下:

Person.java文件内容如下:

java 复制代码
package com.example.demo;

public class Person {
    Integer id;
    String name;
    Integer age;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

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

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

ParaController.java内容如下:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M4")
    public String M4(Person person){
        return "Parameters have received: \n"
                + person.toString();
    }
}

使用postman构造并发送请求,详情如下:

在spring项目开发中,通常使用对象对要传递的参数组进行封装,这样可以简化接口逻辑。

也方便使用一些逻辑进行默认值的设定;

2. 后端参数重命名问题

在前后端配合时,也有可能会出现对于前端传递的参数名(如name),在后端需要进行修改的问题(如username,articlename等等),此时可以使用@RequestParm注解对后端参数重命名:

现.java文件内容如下:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M5")
    public String m5(@RequestParam("name") String username){
        return "Parameter has Received: Name:"+username;
    }
}

运行启动类,构造HTTP请求并发送,详情如下:

示例1:前端使用name,后端使用username:

示例2:前端与后端均使用username:

查看日志警告信息:

2.1 关于@RequestParam注解

Ctrl+左键点击查看@RequestPara注解源码:

可见@RequestParam注解默认情况为:

当后端使用@RequestParam注解对后端参数进行重命名时,默认该属性为必传属性;

可以修改为false,取消其必传限制:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/M5")
    public String m5(@RequestParam(value = "name",required = false) String username){
        return "Parameter has Received: Name:"+username;
    }
}

此时再构造请求发送给服务器:

相关推荐
MX_935927 分钟前
Spring整合Web环境实现思路
java·开发语言·后端·spring
Darkdreams31 分钟前
总结 Spring 注入 bean 的四种方式
java·后端·spring
卓怡学长1 小时前
m278基于web的在线教学质量评价系统
java·数据库·spring·tomcat·maven·intellij-idea
umeelove351 小时前
Spring 循环依赖
java·后端·spring
不想看见4041 小时前
QAbstractItemModel 自定义实现--Qt 模型 / 视图(MVC)
开发语言·qt·mvc
若鱼19191 小时前
SpringBoot4+Kafka4 - 生产环境故障 - 消费者执行时间太长导致消息无限循环投递
java·spring·kafka
代码探秘者2 小时前
【算法篇】4.前缀和
java·数据库·后端·python·算法·spring
华科易迅2 小时前
Spring AOP(XML最终+环绕通知)
xml·java·spring
华科易迅2 小时前
Spring AOP(注解前置+后置通知)
java·后端·spring
堕2742 小时前
JavaEE初阶——《计算机是如何工作的》
java·java-ee