目录
本专栏关于Spring MVC项目的单个及多个参数传参一文中,已经介绍过了对于不同个数的参数传参问题,原文链接如下:
【JavaEE】_Spring MVC 项目单个及多个参数传参-CSDN博客https://blog.csdn.net/m0_63299495/article/details/136436410
如文中所述,当传递的参数个数与类型不同时,就需要频繁修改。
这于前后端配合是非常不便的,在Spring MVC项目中,常使用对象进行传参:
现创建 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项目开发中,通常使用对象对要传递的参数组进行封装,这样可以简化接口逻辑。
也方便使用一些逻辑进行默认值的设定;
在前后端配合时,也有可能会出现对于前端传递的参数名(如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:
查看日志警告信息:
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;
- }
- }
-
此时再构造请求发送给服务器: