常用spring注解

@lucas  April 27, 2023

一、@RequestParam 注解

在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法的形参。

@RequestParam 注解的作用

value=”name” 表示参数名称。

required=true 表示如果没有传递参数,则会报 400参数异常。

以下对前台传参数的常用方式介绍@RequestParam 注解的作用:

1、GET请求方式传递参数

/**
 * @RequestParam注解获取参数(GET请求方式)
 * @param paramName
 * @return
 */
@GetMapping("/testGet1")
public String testGet1(@RequestParam("paramName") String paramName){
    System.out.println("paramName:"+paramName);
    return paramName;
}

2、POST请求方式传递参数

/**
 * @RequestParam注解获取参数(POST请求方式)
 * @param paramName
 * @return
 */
@PostMapping("/testPost1")
public String testPost1(@RequestParam("paramName") String paramName){
    System.out.println("paramName:"+paramName);
    return paramName;
}

二、@PathVariable注解

@PathVariable注解的作用就是从URL里面读取参数值,可以在@RequestMapping里面添加占位符{paramName},还可以添加正则表达式。

http://localhost:8099/XXX/XXX/XXX/param,这个传递到后台的参数值就是param。

@PathVariable注解一般用于传递一个参数的情景,当然也可以通过URL传递多个参数。

1、GET请求方式传递参数

/**
 * @PathVariable注解的作用就是从URL里面读取参数值(GET请求方式)
 * @param paramName
 * @return
 */
@GetMapping("/testGet2/{paramName}")
public String testGet2(@PathVariable String paramName){
    System.out.println("paramName:"+paramName);
    return paramName;
}

2、POST请求方式传递参数

/**
 * @PathVariable注解的作用就是从URL里面读取参数值(POST请求方式)
 * @param paramName
 * @return
 */
@PostMapping("/testPost2/{paramName}")
public String testPost2(@PathVariable String paramName){
    System.out.println("paramName:"+paramName);
    return paramName;
}

3、URL传递多个参数

/**
 * @PathVariable注解的作用就是从URL里面读取参数值(GET请求方式)
 *
 * @PathVariable注解一般用于只传递一个参数的场景,当然也可以传递多个参数。
 *
 * @param param1  占位符{}添加了正则表达式,限定5位数值,如果传递过来的参数不合要求则不会执行方法的代码。
 * @param param2
 * @return
 */
@GetMapping("/testGet2_1/{param1:[0-9]{5}}/{param2}")
public String testGet2_1(@PathVariable String param1,@PathVariable String param2){
    System.out.println("param1:"+param1);
    System.out.println("param2:"+param2);
    return param1+","+param2;
}

三、SpringMVC的自动匹配

1、GET请求方式传递参数

/**
 * springMVC的自动匹配参数(GET请求方式)
 * 形参paramName会自动匹配请求中key为paramName的参数值。
 * 可以接收AJAX封装的请求参数
 * @param paramName
 */
@GetMapping("/testGet3")
public String testGet3(String paramName,String paramName1, Model model){
    System.out.println("paramName:"+paramName);
    System.out.println("paramName1:"+paramName1);
    model.addAttribute("paramName",paramName);
    return paramName;
}

2、POST请求方式传递参数

/**
 * springMVC的自动匹配参数(POST请求方式)
 * 形参paramName会自动匹配请求中key为paramName的参数值。
 * 可以接收AJAX封装的请求参数
 * @param paramName
 */
@PostMapping("/testPost3")
public String testPost3(String paramName,String paramName1, Model model){
    System.out.println("paramName:"+paramName);
    System.out.println("paramName1:"+paramName1);
    model.addAttribute("paramName",paramName);
    return paramName;
}

四、SpringMVC的自动装箱(实体类接收参数)

实体类定义如下:

@Data
@Accessors(chain = true)
public class ParamsEntity {
    String param1;
    String param2;
}

1、GET请求方式传递参数

/**
 * SpringMVC的自动装箱(GET请求方式)
 *
 * SpringMVC会把请求参数装箱到实体类的属性当中,属性名称就是参数名称
 *
 * @param paramsEntity
 * @return
 */
@GetMapping("/testGet4")
public String testGet4(ParamsEntity paramsEntity){
    System.out.println("params:"+paramsEntity.toString());
    return paramsEntity.toString();
}

2、POST请求方式传递参数

/**
 * SpringMVC的自动装箱(POST请求方式)
 *
 * SpringMVC会把请求参数装箱到实体类的属性当中,属性名称就是参数名称
 *
 * @param paramsEntity
 * @return
 */
@PostMapping("/testPost4")
public String testPost4(ParamsEntity paramsEntity){
    System.out.println("params:"+paramsEntity.toString());
    return paramsEntity.toString();
}

添加新评论