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

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

相关推荐
冬天vs不冷3 小时前
SpringBoot基础(四):bean的多种加载方式
java·spring boot·spring
络75 小时前
Spring14——案例:利用AOP环绕通知计算业务层接口执行效率
java·后端·spring·mybatis·aop
北极无雪10 小时前
Spring源码学习(拓展篇):SpringMVC中的异常处理
java·开发语言·数据库·学习·spring·servlet
Amagi.11 小时前
Spring中Bean的作用域
java·后端·spring
J老熊12 小时前
Spring Cloud Netflix Eureka 注册中心讲解和案例示范
java·后端·spring·spring cloud·面试·eureka·系统架构
TheManba12 小时前
04. maven 三种项目打包方式 pom、jar、war 的区别(记一次 Spring 项目启动报错)
spring·maven·jar
努力的布布12 小时前
SpringMVC源码-AbstractHandlerMethodMapping处理器映射器将@Controller修饰类方法存储到处理器映射器
java·后端·spring
xujinwei_gingko12 小时前
Spring MVC 常用注解
java·spring·mvc
LearnTech_12312 小时前
【学习笔记】手写一个简单的 Spring MVC
笔记·学习·spring·spring mvc
PacosonSWJTU13 小时前
spring揭秘26-springmvc06-springmvc注解驱动的web应用
java·spring·springmvc