聊聊 filter,interceptor,aop

总结:filter,interceptor,aop,的思想其实都是对一些公用的东西的 抽取。

          从范围来讲:filter 是最外层,对容器的 url 全部有用,如静态 文件,action 等,可获取容器的一些内容,只能用于Web程序中 是Servlet规范规定。

                                interceptor 只对 action 有用,可以作用 具体的 类和方法。

                                aop 对spring管理的bean 有用,具体到类 和方法。

                   

       从实现来讲:filter 基于回调

                            

                           interceptor 基于反射机制

                           aop 基于代理

 

                          都是链式 调用

 

===========before doFilter1
===========before doFilter2
===========HandlerInterceptorAll preHandle
===========HandlerInterceptor1 preHandle
===========HandlerInterceptor2 preHandle
执行Controller
Controller return前
===========HandlerInterceptor2 postHandle
===========HandlerInterceptor1 postHandle
===========HandlerInterceptorAll preHandle
Controller return后,Jsp加载完成
===========HandlerInterceptor2 afterCompletion
===========HandlerInterceptor1 afterCompletion
===========HandlerInterceptorAll preHandle
===========before doFilter2
===========before doFilter1

 

 请求流程图:

 

作用:

  • 日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV...
  • 权限检查:认证或者授权等检查
  • 性能监控:通过拦截器在进入处理器之前记录开始时间,处理完成后记录结束时间,得到请求处理时间。
  • 通用行为:读取cookie得到用户信息并将用户对象放入请求头中,从而方便后续流程使用。

看图说话:

 

 

 

 

posted @ 2019-07-08 10:23  川流不息&  阅读(1087)  评论(0编辑  收藏  举报