Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)

1. 直接接值

只要形参数名和类型与传递参数相同,即可自动接收!

java 复制代码
@Controller
@RequestMapping("param")
public class ParamController {

    /**
     * 前端请求: http://localhost:8080/param/value?name=xx&age=18
     *
     * 可以利用形参列表,直接接收前端传递的param参数!
     *    要求: 参数名 = 形参名
     *          类型相同
     * 出现乱码正常,json接收具体解决!!
     * @return 返回前端数据
     */
    @GetMapping(value="/value")
    @ResponseBody
    public String setupForm(String name,int age){
        System.out.println("name = " + name + ", age = " + age);
        return name + age;
    }
}

2. @RequestParam注解

可以使用 @RequestParam 注释将 Servlet 请求参数(即查询参数或表单数据)绑定到控制器中的方法参数。@RequestParam中的value值只要与传递参数名相同,Spring MVC就可以将数据接入到注解对应的形参中。

@RequestParam使用场景:

  • 指定绑定的请求参数名
  • 要求请求参数必须传递
  • 为请求参数提供默认值

基本用法:

java 复制代码
 /**
 * 前端请求: http://localhost:8080/param/data?name=xx&stuAge=18
 * 
 *  使用@RequestParam注解标记handler方法的形参
 *  指定形参对应的请求参数@RequestParam(请求参数名称)
 */
@GetMapping(value="/data")
@ResponseBody
public Object paramForm(@RequestParam("name") String name, 
                        @RequestParam("stuAge") int age){
    System.out.println("name = " + name + ", age = " + age);
    return name+age;
}

默认情况下,使用此批注的方法参数是必需的,但您可以通过将 @RequestParam 批注的 required 标志设置为 false! 如果没有没有设置非必须,也没有传递参数会出现400错误。

将参数设置非必须,并且设置默认值:

java 复制代码
@GetMapping(value="/data")
@ResponseBody
public Object paramForm(@RequestParam("name") String name, 
                        @RequestParam(value = "stuAge",required = false,defaultValue = "18") int age){
    System.out.println("name = " + name + ", age = " + age);
    return name+age;
}

3. 特殊场景接值

3.1 一名多值

有时候可能会出现一个参数名有多个值,例如多选框,提交的数据的时候一个key对应多个值,我们可以使用集合进行接收。这种情况下,我们将参数类型定义为列表,并添加@RequestParam注解指定即可。

java 复制代码
   /**
    * 前端请求: http://localhost:8080/param/mul?hbs=吃&hbs=喝
    *
    *  一名多值,可以使用集合接收即可!但是需要使用@RequestParam注解指定
    */
   @GetMapping(value="/mul")
   @ResponseBody
   public Object mulForm(@RequestParam List<String> hbs){
       System.out.println("hbs = " + hbs);
       return hbs;
   }

3.2 实体接收

Spring MVC 是 Spring 框架提供的 Web 框架,它允许开发者使用实体对象来接收 HTTP 请求中的参数。通过这种方式,可以在方法内部直接使用对象的属性来访问请求参数,而不需要每个参数都写一遍。下面是一个使用实体对象接收参数的示例:

定义一个用于接收参数的实体类:

java 复制代码
     public class User {
     
       private String name;
     
       private int age = 18;
     
       // getter 和 setter 略
     }

在控制器中,使用实体对象接收,示例代码如下:

java 复制代码
     @Controller
     @RequestMapping("param")
     public class ParamController {
     
         @RequestMapping(value = "/user", method = RequestMethod.POST)
         @ResponseBody
         public String addUser(User user) {
             // 在这里可以使用 user 对象的属性来接收请求参数
             System.out.println("user = " + user);
             return "success";
         }
     }

在上述代码中,将请求参数name和age映射到实体类属性上,要求属性名必须等于参数名!否则无法映射!而且不需要添加注解!

相关推荐
黑胡子大叔的小屋40 分钟前
基于springboot的海洋知识服务平台的设计与实现
java·spring boot·毕业设计
ThisIsClark42 分钟前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
雷神乐乐2 小时前
Spring学习(一)——Sping-XML
java·学习·spring
小林coding2 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
V+zmm101342 小时前
基于小程序宿舍报修系统的设计与实现ssm+论文源码调试讲解
java·小程序·毕业设计·mvc·ssm
文大。3 小时前
2024年广西职工职业技能大赛-Spring
java·spring·网络安全
一只小小翠3 小时前
EasyExcel 模板+公式填充
java·easyexcel
m0_748256343 小时前
QWebChannel实现与JS的交互
java·javascript·交互
Jelena技术达人4 小时前
Java爬虫获取1688关键字 item_search接口返回值详细解析
java·开发语言·爬虫
u0107735144 小时前
【字符串】-Lc5-最长回文子串(中心扩展法)
java·算法