自学内容网 自学内容网

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

目录

1. 使用对象传参

2. 后端参数重命名问题

2.1 关于@RequestParam注解


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

【JavaEE】_Spring MVC 项目单个及多个参数传参-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63299495/article/details/136436410

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

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

1. 使用对象传参

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

Person.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内容如下:

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文件内容如下:

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,取消其必传限制:

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

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


原文地址:https://blog.csdn.net/m0_63299495/article/details/136513718

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!