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映射到实体类属性上,要求属性名必须等于参数名!否则无法映射!而且不需要添加注解!

相关推荐
XuanXu33 分钟前
Java AQS原理以及应用
java
风象南3 小时前
SpringBoot中6种自定义starter开发方法
java·spring boot·后端
mghio12 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室17 小时前
java日常开发笔记和开发问题记录
java
咖啡教室17 小时前
java练习项目记录笔记
java
鱼樱前端18 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea18 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea18 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
李少兄20 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http