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


    目录

    1. 使用对象传参

    2. 后端参数重命名问题

    2.1 关于@RequestPara注解


    本专栏关于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文件内容如下:

    1. package com.example.demo;
    2. public class Person {
    3. Integer id;
    4. String name;
    5. Integer age;
    6. public Integer getId() {
    7. return id;
    8. }
    9. public void setId(Integer id) {
    10. this.id = id;
    11. }
    12. public String getName() {
    13. return name;
    14. }
    15. public void setName(String name) {
    16. this.name = name;
    17. }
    18. public Integer getAge() {
    19. return age;
    20. }
    21. public void setAge(Integer age) {
    22. this.age = age;
    23. }
    24. @Override
    25. public String toString() {
    26. return "Person{" +
    27. "id=" + id +
    28. ", name='" + name + '\'' +
    29. ", age=" + age +
    30. '}';
    31. }
    32. }

    ParaController.java内容如下:

    1. package com.example.demo.controller;
    2. import com.example.demo.Person;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import org.springframework.web.bind.annotation.RestController;
    5. @RequestMapping("/Para")
    6. @RestController
    7. public class ParaController {
    8. @RequestMapping("/M4")
    9. public String M4(Person person){
    10. return "Parameters have received: \n"
    11. + person.toString();
    12. }
    13. }

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

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

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

    2. 后端参数重命名问题

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

    现.java文件内容如下:

    1. package com.example.demo.controller;
    2. import com.example.demo.Person;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import org.springframework.web.bind.annotation.RequestParam;
    5. import org.springframework.web.bind.annotation.RestController;
    6. @RequestMapping("/Para")
    7. @RestController
    8. public class ParaController {
    9. @RequestMapping("/M5")
    10. public String m5(@RequestParam("name") String username){
    11. return "Parameter has Received: Name:"+username;
    12. }
    13. }

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

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

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

    查看日志警告信息: 

     

    2.1 关于@RequestParam注解

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

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

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

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

    1. package com.example.demo.controller;
    2. import com.example.demo.Person;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import org.springframework.web.bind.annotation.RequestParam;
    5. import org.springframework.web.bind.annotation.RestController;
    6. @RequestMapping("/Para")
    7. @RestController
    8. public class ParaController {
    9. @RequestMapping("/M5")
    10. public String m5(@RequestParam(value = "name",required = false) String username){
    11. return "Parameter has Received: Name:"+username;
    12. }
    13. }

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

  • 相关阅读:
    助力电力行业数字化转型:智慧风电项目介绍
    工业网络通讯技术的发展历程
    条件查询-分页查询-条件分页查询
    RabbitMQ集群
    移动云获取推拉流地址
    【Linux】文件系统和软硬链接
    Linux高性能服务器编程 学习笔记 第十三章 多线程编程
    Aspose.Words for .NET图像处理教程——在Word文档的页面上插入条形码
    无影云桌面 1块钱体验
    4路光栅尺磁栅尺编码器解码转换5MHz高速差分信号转Modbus TCP网络模块 YL97-RJ45
  • 原文地址:https://blog.csdn.net/m0_63299495/article/details/136488702