美文网首页
2023-12-06 异常处理 拦截器 参数校验

2023-12-06 异常处理 拦截器 参数校验

作者: 大也 | 来源:发表于2023-12-18 09:30 被阅读0次

    异常处理 声明式异常处理

    /**

    • 1.全局异常发生,会走此类写的handler!
    • @RestControllerAdvice = @ControllerAdvice + @ResponseBody
    • @ControllerAdvice 代表当前类的异常处理controller! 是可以返回逻辑视图 转发和重定向
    •                      找视图页面的话 返回对应的字符串         return "home";
      
    • @ResponseBody 直接返回json字符串
    • 2.扫描controller对应的包,将handler加入到ioc
    • @ComponentScan(basePackages = {"com.atguigu.controller",
    • "com.atguigu.exceptionhandler"})
    • 3.理解 发生异常 -》 ControllerAdvice 注解的类型 -》 @ExceptionHandler(指定的异常) -> handler
    • 写方法 指定的异常 可以精准查找,或者查找父异常
    • @ExceptionHandler(NullPointerException.class)
      */

    拦截器方法拦截位置:


    image.png

    拦截器 aop 思维


    image.png

    源码解释
    DispatcherServlet


    image.png image.png image.png

    三 .参数校验

    @Data
    public class User {
    //age 1 <= age < = 150
    @Min(10)
    private int age;

    //name 3 <= name.length <= 6
    @Length(min = 3,max = 10)
    private String name;
    
    //email 邮箱格式
    @Email
    private String email;
    

    }

    /***

    •     |@Null|标注值必须为 null|
      
    •     |@NotNull|标注值不可为 null|
      
    •     |@AssertTrue|标注值必须为 true|
      
    •     |@AssertFalse|标注值必须为 false|
      
    •     |@Min(value)|标注值必须大于或等于 value|
      
    •     |@Max(value)|标注值必须小于或等于 value|
      
    •     |@DecimalMin(value)|标注值必须大于或等于 value|
      
    •     |@DecimalMax(value)|标注值必须小于或等于 value|
      
    •     |@Size(max,min) |标注值大小必须在 max 和 min 限定的范围内|
      
    •     |@Digits(integer,fratction)|标注值值必须是一个数字,且必须在可接受的范围内|
      
    •     |@Past|标注值只能用于日期型,且必须是过去的日期|
      
    •     |@Future|标注值只能用于日期型,且必须是将来的日期|
      
    •     |@Pattern(value)|标注值必须符合指定的正则表达式|
      
    •     |@Email|标注值必须是格式正确的 Email 地址|
      
    •     |@Length|标注值字符串大小必须在指定的范围内|
      
    •     |@NotEmpty|标注值字符串不能是空字符串|
      
    •     |@Range |标注值必须在指定的范围内|
      
    • 校验注解实现 /
    • https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator/
    • https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator-annotation-processor
      <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>8.0.0.Final</version>
      </dependency>
      <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator-annotation-processor</artifactId>
      <version>8.0.0.Final</version>
      </dependency>

    // * |用户更新|PUT /user|{ user 更新数据}|{响应数据}|
    @PostMapping("user/updateUserInfo")
    @ResponseBody
    public Object updateUserInfo(@Validated @RequestBody User user , BindingResult result){

    if(result.hasErrors()){
    HashMap hashMap = new HashMap();
    hashMap.put("code","1");
    hashMap.put("msg","参数校验异常");
    return hashMap;
    }else {
    //更新数据库事务
    if(user.getName().equals("1")){
    user.setAge(18);
    user.setName("sdf");
    }
    return user;
    }
    }
    */

    相关文章

      网友评论

          本文标题:2023-12-06 异常处理 拦截器 参数校验

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