手机wap网站免费建站,域名备案要多少钱,网站标题会影响吗,北京seo优化分析在 Spring Boot 中#xff0c;可以使用 Validation 和国际化来实现对入参的校验。
常用的校验
NotNull验证字段值不能为 nullNotEmpty验证字段值不能为 null 或空字符串NotBlank验证字符串字段值不能为空、null#xff0c;并且必须至少包含一个非空白字符Size验证字符串、…在 Spring Boot 中可以使用 Validation 和国际化来实现对入参的校验。
常用的校验
NotNull验证字段值不能为 nullNotEmpty验证字段值不能为 null 或空字符串NotBlank验证字符串字段值不能为空、null并且必须至少包含一个非空白字符Size验证字符串、集合或数组的大小是否在指定范围内Min验证数值字段值必须大于等于指定的最小值Max验证数值字段值必须小于等于指定的最大值Email验证字段值必须是有效的电子邮件地址格式Pattern验证字段值必须匹配指定的正则表达式模式Past验证日期字段值必须是过去的日期Future验证日期字段值必须是将来的日期
引入依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId
/dependency
创建properties文件
安装插件 创建文件 添加语言 添加配置 语言配置
非空配置 长度配置 解决properties文件中文乱码 mode添加注解
NotBlank 注解用于验证字符串类型字段不为空或不为 null。如果验证失败则使用 message 属性中定义的错误消息提示用户输入不能为空或 null 值。
Length 注解用于验证字符串类型字段的长度是否符合指定的范围。如果验证失败就会使用 message 属性中定义的错误消息提示用户输入的长度非法。 /*** 学生姓名*/NotBlank(message {name.notBlank})Length(min 2,max 19,message{name.length})private String name;
controller添加注解
Validated 是 Spring Framework 提供的一个注解用于在控制器方法级别或类级别上启用方法参数验证以对请求参数进行验证。
Valid 是 Java 标准库中的一个注解它与 Bean Validation 规范JSR 380一起使用用于启用对象级别验证。
RestController
RequestMapping(/test)
Validated
public class TestController {PostMapping(/user)public ResponseResultString user(Valid RequestBody Student student) {return new ResponseResult(userToken);}
}
添加异常捕捉
这个类捕获参数异常
import com.example.demo.util.HttpCodeEnum;
import com.example.demo.util.ResponseResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.servlet.http.HttpServletRequest;
import java.util.List;RestControllerAdvice
public class GlobalExceptionHandler {private static final Logger log LoggerFactory.getLogger(GlobalExceptionHandler.class);Autowiredprivate HttpServletRequest httpServletRequest;private final String sysError系统出错;// get请求的对象参数校验异常ResponseStatus(HttpStatus.BAD_REQUEST)ExceptionHandler({MissingServletRequestParameterException.class})public ResponseResult bindExceptionHandler(MissingServletRequestParameterException e) {String requestURI httpServletRequest.getRequestURI();log.error(请求地址{},get方式请求参数{}必传, requestURI,e.getParameterName());return ResponseResult.errorResult(HttpCodeEnum.SYSTEM_ERROR.getCode(), e.getMessage());}// post请求的对象参数校验异常ResponseStatus(HttpStatus.BAD_REQUEST)ExceptionHandler({MethodArgumentNotValidException.class})public ResponseResult methodArgumentNotValidHandler(MethodArgumentNotValidException e) {String requestURI httpServletRequest.getRequestURI();log.error(请求地址{},post方式请求参数异常{}, requestURI, e.getMessage());ListObjectError allErrors e.getBindingResult().getAllErrors();return ResponseResult.errorResult(HttpCodeEnum.SYSTEM_ERROR.getCode(), getValidExceptionMsg(allErrors));}private String getValidExceptionMsg(ListObjectError errors) {if(!CollectionUtils.isEmpty(errors)){StringBuilder sb new StringBuilder();errors.forEach(error - {if (error instanceof FieldError) {sb.append(((FieldError)error).getField()).append(:);}sb.append(error.getDefaultMessage()).append(;);});String msg sb.toString();msg msg.substring(0, msg.length() -1);return msg;}return null;}}测试
name为空 name长度不符合 切换为英文