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

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

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

  • 相关阅读:
    MySQL日志管理、备份与恢复
    CCF CSP认证 历年题目自练Day30
    使用QtService实现Qt后台服务程序
    kotlin实现ArrayDeque
    【SVM分类】基于matlab粒子群算法优化SVM分类【含Matlab源码 1859期】
    1.2.OpenCV技能树--第一单元--OpenCV安装
    公布半小时下载量达10W:京东T5级架构师出品高并发核心编程手册
    第六章 块为结构建模 P1|系统建模语言SysML实用指南学习
    jQuery之基本概念和封装原理
    抓包整理————ip 协议四[十五]
  • 原文地址:https://blog.csdn.net/m0_63299495/article/details/136513718