美文网首页
在后端Controller层校验前台传来的数据

在后端Controller层校验前台传来的数据

作者: 我问你瓜保熟吗 | 来源:发表于2022-05-04 14:20 被阅读0次

一、引入依赖

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.2.2.Final</version>
        </dependency>

二、javaBean上设置校验规则

@Data
@AllArgsConstructor
public class Student {
    @NotNull(message = "id不能为空")
    private Integer id;
    @NotNull(message = "姓名不能为空")
    private String name;
    @NotNull(message = "年龄不能为空")
    private Integer age;
}

三、Controller层返回校验错误信息

将不符合校验规则的字段错误信息,统一返回到前台

@RestController
public class StudentController {

    @RequestMapping("/student")
    public String student(@Validated Student student, BindingResult bindingResult) {

        if (bindingResult.hasErrors()) {
            List<ObjectError> allErrors = bindingResult.getAllErrors();
            StringBuffer stringBuffer = new StringBuffer();

            for (ObjectError error : allErrors) {
                System.out.println(error.getDefaultMessage());
                stringBuffer.append(error.getDefaultMessage() + ";");
            }
            return stringBuffer.toString();
        }
        return student.toString();
    }
}

四、利用切面实现全局异常处理

使用全局异常处理之后,在JavaBean上增加异常判断注解之后,只需要在Controller方法里增加@Valid即可

  • BindExceptionGlobalExceptionHandler
@ControllerAdvice
public class BindExceptionGlobalExceptionHandler {

    @ResponseBody
    @ExceptionHandler(BindException.class)
    public ResultBean validationErrorHandler(BindException e) throws JsonProcessingException {
        //1.此处先获取BindingResult
        BindingResult bindingResult = e.getBindingResult();
        //2.获取错误信息
        List<ObjectError> allErrors = bindingResult.getAllErrors();
        System.out.println(allErrors);
        //3.组装异常信息
        StringBuffer stringBuffer = new StringBuffer();
        for (ObjectError error : allErrors) {
            stringBuffer.append(error.getDefaultMessage() + ";");
        }
        //5.返回错误信息
        return new ResultBean(stringBuffer.toString(), 400);
    }
}
  • ResultBean
@Data
public class ResultBean {

    private String msg;
    private Integer code;

    public ResultBean(String msg, Integer code) {
        this.msg = msg;
        this.code = code;
    }

    public static ResultBean success(String msg, Integer code) {
        ResultBean jsonData = new ResultBean(msg, code);
        jsonData.msg = msg;
        return jsonData;
    }

}
image.png

五、常用校验规则

  1. JSR提供的标准注解
    @Null 被注释的元素必须为 null
    @NotNull 被注释的元素必须不为 null
    @AssertTrue 被注释的元素必须为 true
    @AssertFalse 被注释的元素必须为 false
    @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
    @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
    @Past 被注释的元素必须是一个过去的日期
    @Future 被注释的元素必须是一个将来的日期
    @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式

  2. Hibernate Validator提供的校验注解
    @NotBlank(message =) 验证字符串非null,且长度必须大于0
    @Email 被注释的元素必须是电子邮箱地址
    @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
    @NotEmpty 被注释的字符串的必须非空
    @Range(min=,max=,message=) 被注释的元素必须在合适的范围内

相关文章

  • 在后端Controller层校验前台传来的数据

    一、引入依赖 二、javaBean上设置校验规则 三、Controller层返回校验错误信息 将不符合校验规则的字...

  • Controller开发规范

    一、Controller层的职责 controller层的职责:是对用户的数据进行校验、组织、重组、转换等,之后调...

  • Node带来的新的开发模式

    前后端分离 在职责上划分: 前端:负责View和Controller层。 后端:只负责Model层,业务处理/数据...

  • form表单中带有文件上传,同时提交

    前台JS(easyUI) 前台表单 后台controller层

  • MVC三层结构

    Model模型层,处理数据库的数据,业务逻辑处理 View视图层,界面层,前台的结构 Controller控制层,...

  • 前端MVC和MVVM的理解

    MVC M model层(后端传入的数据) V view层(即我们所看到的页面) C controller层(处理...

  • 提交按钮

    提交按钮 修改状态 前台代码 前台发送请求 controller层/** service层 impl mapper...

  • 前后台分离

    前后台分离时,要在接前台数据的Controller层添加注解@CrossOrigin注: @CrossOri...

  • 日志定位

    前后端 前端: 收集数据、数据校验、数据处理、数据解析、数据展现 后端: 数据解析、数据校验、数据处理 日志定位 ...

  • 2018-09-27/28日志定位+linux命令

    前后端 一、前端 手机数据 数据校验 数据处理 数据解析 数据展现 二、后端 数据解析 数据校验 数据处理 日志定...

网友评论

      本文标题:在后端Controller层校验前台传来的数据

      本文链接:https://www.haomeiwen.com/subject/qliwyrtx.html