过滤器,拦截器,切面的区别

过滤器:起到过滤筛选作用的一种事物,不过对于java中来说就是对客户端web层的访问过滤,也可以理解为一种预处理手段

常使用的场景:统一编码的设置,过滤敏感字符,登录校验,权限控制等

使用:实现filter接口

详细理解总结:依赖于servlet,在初始化时被调用一次,init()也会只执行一次,dofilter()请求之前执行,destory()一次,基于函数回调实现

 

拦截器:拦截器是springmvc提供的,类似于过滤器的功效,是对控制层的拦截

常使用的场景:日志记录,登录校验,权限校验

使用:实现HandlerInterceptor接口或继承其子类

详细理解总结:依赖于springmvc,preHandle() 在目标请求完成之前执行,postHandle() 在目标请求之完成后执行,afterCompletion() 在整个请求完成之后,只拦截action请求。基于java的反射机制实现,生命周期中可以多次被调用

 

切面(apo/aspect)

常使用的场景:日志,一般请求都会要求具体到那个方法,那个参数等,所以切面做日志在合适不过了

切面是过滤器和拦截器的更细分

posted @ 2021-03-09 14:15  生活是一种范  阅读(651)  评论(0编辑  收藏  举报