过滤器和拦截器

先说一下区别。过滤器嘛,过滤,举个例子,出国游玩,那么出中国,不管你从中国去哪里,都会被过滤,是否有带违禁物品啊啥的。那么拦截器呢、落地签证,也就是具体的哪个国家,审核你是否是良民。也就是说。在tomcat容器中用户发送请求以后,是给serlet去调用接口、那么在给servlet调用方法之前,过滤器会过滤。拦截器是在servlet拿到请求之后做的限制操作。搞明白这个,基本上就ok 了。

copy了一个书面些的说法:过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。

写一下拦截器关于统一处理异常类的使用方式,也就是所有的异常,统一处理。

首先肯定定义各种自定义的异常,业务异常举例:

ServiceException extends RuntimeException implements Serializable

这样,就会很好的查bug。出哪种异常,哪里就有问题。不能继承exception,会导致食物异常。都继承runtimeexception,顾名思义,运行是异常,就都可以捕获到啦~

继承WebMvcConfigurerAdapter(web容器),使用configuration 将本类标注成配置类 使用spring bean 注入到ioc 容器中

两种方式:
registry.addInterceptor(new AuthInterceptor())
        // 加一个方法就拦截一个
        .addPathPatterns("/dockingIcbc/billPay");
super.addInterceptors(registry);

/*registry.addInterceptor(new AuthInterceptor())
        // 默认拦截所有方法
        .addPathPatterns("/**").
        // 配置不进去拦截器的方法,多少个就可以像这样儿在后面一直添加,excludePathPatterns("/testBean/test","","",........).
                excludePathPatterns("/dockingIcbc/billPay/@@");
super.addInterceptors(registry);*/

异常处理

也就是  执行业务代码,比如出现验证码异常:

那么就会被捕获验证码异常。返回错误code、message。

就算代码中,有需要catch 有要做处理的,也不影响,因为你方法只要出异常,就会被捕获随后统一处理。下面删除举例

try {
    xxMapper.delete();
}catch (Exception e){
    //事务回滚
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    throw new ServiceException("删除失败");
}
return ResultGenerator.genSuccessResultSms("删除成功!");

这样就完成了。也可以在拦截器中  implements HandlerInterceptor  登录拦截举例  (也就是在每次调用接口之前判断用户是否登录,token 是否有权限访问接口)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值