美文网首页
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