springboot 添加验证器

1、添加依赖

        <!--验证器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

2、验证器类

public class UserStoreValidator {

    private Long userId;

    @NotNull(message = "用户名不能为空")
    @Size(min = 2, max = 20, message = "账号长度必须是2-20个字符")
    private String userName;

    @Size(min = 6, max = 20, message = "密码长度必须是6-20个字符")
    private String userPassword;

    @NotNull(message = "用户类型不能为空")
    private Character type;

    private Timestamp registerTime;

}

3、在控制器中使用

    @PostMapping("")
    public ReturnResult store(@RequestBody @Validated UserStoreValidator userStoreValidator) {
        UserStoreValidator store = userService.store(userStoreValidator);

        System.out.println(userStoreValidator);

        return ReturnResult.success( "添加用户成功");
    }

4、自定义验证失败的异常

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 处理所有校验失败的异常(MethodArgumentNotValidException异常)
     * 设置响应状态码为400
     * @param ex
     * @return
     */
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handleBindGetException(MethodArgumentNotValidException ex) {
        // 获取所有异常
//        List<String> errors = ex.getBindingResult()
//                .getFieldErrors()
//                .stream()
//                .map(x -> x.getDefaultMessage())
//                .collect(Collectors.toList());
        return "验证失败啦";
    }

Spring Boot添加拦截非常简单,只需要实现HandlerInterceptor接口,并通过@Configuration注解将其配置为一个Bean即可。 以下是一个示例: 1. 创建一个拦截类,实现HandlerInterceptor接口: ```java public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行拦截,可以进行一些权限验证、日志记录等操作 return true; // 返回true表示继续执行请求处理,返回false表示拦截请求 } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后进行拦截,可以对返回结果进行修改等操作 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在请求处理完成之后进行拦截,可以进行一些资源清理等操作 } } ``` 2. 在配置类中添加拦截配置: ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private MyInterceptor myInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(myInterceptor).addPathPatterns("/**"); // 添加拦截并设置拦截路径 } } ``` 这样就完成了拦截添加。在addPathPatterns方法中,可以设置拦截的路径,例如"/user/**"表示拦截所有以"/user"开头的请求。 需要注意的是,如果需要在拦截中使用@Autowired注解注入其他Bean,需要在拦截类上上@Component注解,使其成为一个Spring Bean。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值