【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;
    }
}

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

相关推荐
敲代码的嘎仔10 小时前
JavaWeb零基础学习Day6——JDBC
java·开发语言·sql·学习·spring·单元测试·maven
Predestination王瀞潞11 小时前
Java EE开发技术(第六章:EL表达式)
前端·javascript·java-ee
论迹11 小时前
【JavaEE】-- Cookie &&Session
java·java-ee
程序猿小蒜13 小时前
基于springboot的校园社团信息管理系统开发与设计
java·前端·spring boot·后端·spring
兔兔爱学习兔兔爱学习13 小时前
Spring Al学习9:模型上下文协议(MCP)
java·学习·spring
m0_7482480214 小时前
Spring MVC中@RequestMapping注解的全面解析
java·spring·mvc
Kay_Liang15 小时前
Spring中@Controller与@RestController核心解析
java·开发语言·spring boot·后端·spring·mvc·注解
行思理15 小时前
Spring MVC 注释新手教程
java·spring·mvc
朝新_16 小时前
【SpringBoot】玩转 Spring Boot 日志:级别划分、持久化、格式配置及 Lombok 简化使用
java·spring boot·笔记·后端·spring·javaee
m0_7482480216 小时前
Spring设计模式刨根问底
java·spring·设计模式