【Spring实战(第5版)阅读笔记】:引入参数校验

添加依赖

<dependency>
     <groupId>org.springframework.bootgroupId>
     <artifactId>spring-boot-starter-validationartifactId>
dependency>

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

如下:

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;

@Data
public class User {
	@NotBlank(message = "姓名不能为空")
	private String name;

	@Pattern(regexp = Regexps.PHONE, message = "手机号格式不正确")
	private String phone;

	@Email(message = "邮箱格式不正确")
	private String email;
}

其中Regexps.PHONE是另外定义的一个字符串,代码如下:

public class Regexps {
	// 手机号校验正则:这个正则比较Low,只做演示用,真正开发不能用这个
	public static final String PHONE = "^[1]+\\d{10}$";
}

注意:

  • 此处使用了@Data注解,所以不用编写构造方法的代码,也不用编写Getter和Setter方法的代码(@Data注解可以生成这些方法)
  • @Data注解必须配合IDE的Lombok插件才能生效
  • 要使用@Data注解,项目必须引入lombok依赖,对于maven项目,引入:
<dependency>
	<groupId>org.projectlombokgroupId>
	<artifactId>lombokartifactId>
	
dependency>
  • 如果没有使用lombok则需要手动写构造方法、Getter方法、Setter方法(否则后端接收不到前端传来的参数)
    说明:
  • 类注解:
    • @Data:用于生成构造方法、Getter方法、Setter方法
  • 变量注解(其中各个注解的message指定在校验失败是提示前端说什么消息):
    • @NotBlank:对String类型的成员变量进行校验(校验变量不能是null也不能是空字符串)
    • @Pattern:对String类型的成员变量进行校验(判断是否符合指定的正则表达式)
    • @Email:对String类型的成员变量进行校验(判断内容是否是一个合法的邮箱地址)

关于具体有些什么校验注解可以参考官网的文档:
Jakarta.Validation的官网文档 里面包括了代码,英文的,难看

我一般都是看别人的博客:Java使用注释校验数据有效性 全面而且是中文的


定义一个Controller

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSON;

import site.shenjie.study.spring.model.User;

/**
 * 演示用Controller
 * 
 * @author ShenJie
 *
 */
@Validated
@RestController
@RequestMapping("/hello")
public class HelloWorldController {

	/**
	 * 第一个接口
	 * 
	 * @return 接口返回内容,一般会以JSON字符串的形式返回给前端
	 */
	@GetMapping("/world")
	public String world(@Validated User user) {
		return JSON.toJSONString(user);
	}
}

其中:

  • 类注解:
    • @RestController:对SpringBoot声明本类是一个控制器
    • @RequestMapping:对hello的请求进行响应
  • 方法注解:
    • @GetMapping:对hello下的world请求进行响应,而且得是GET请求才会响应
  • 参数注解:
    • @Validated:启用参数校验,按照实体类User内部定义的规则进行校验

运行项目

进行访问

参数全都合格的话,是这样的:
【Spring实战(第5版)阅读笔记】:引入参数校验_第1张图片
存在至少一个不合法参数的时候:
【Spring实战(第5版)阅读笔记】:引入参数校验_第2张图片

你可能感兴趣的:(笔记,spring,java,validation)