一.过滤器,拦截器,AOP简介


过滤器

1.过滤器的概念

  • Filter(过滤器)是J2EE的规范,Servlet2.3开始引入/实现的是职责链模式。多个过滤器形成一个过滤器链,过滤器链中不同过滤器的先后顺序由部署文件web.xml中过滤器映射的顺序决定。
  • 过滤器位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求和响应。
  • 实现Filter接口,分别有init()用于完成过滤器的初始化,destroy() 用于过滤器销毁前,完成某些资源的回收,doFilter()实现过滤功能,对每个请求增加额外的处理。
  • 基于 Servlet,通过函数回调方式实现,可以过滤请求和图片文件等,每个请求一个过滤器只能过滤一次。
  • 在请求到达Servlet/JSP之前,过滤器截获请求。
  • 在响应送给客户端之前,过滤器截获响应。
  • 最先截获客户端请求的过滤器将最后截获Servlet/JSP的响应信息。

2.过滤器的主要作用

  • 用户访问权限处理
  • 设置字符集乱码处理
  • 过滤敏感词汇、压缩响应信息

拦截器

1. 拦截器的概念(基于SpringMVC)
  • 基于 java 的反射机制,代理模式实现
  • java里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。
  • 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理
  • 实现HandlerInterceptor接口有三个方法,分别为在业务处理器处理请求之前被调用(preHandle()),在业务处理器处理完请求后(postHandle()),完全处理完请求后被调用(afterCompletion())。
  • 拦截器采用责任链模式,在责任链模式里,很多对象由每一个对象对其下一个的引用而连接起来形成一条链。.责任链每一个节点,都可以继续调用下一个节点,也可以阻止流程继续执行。
2.拦截器作用
  • 只能拦截请求,可以访问上下文等对象,功能强大,一个请求可多次拦截。
  • 用户访问权限处理
  • 登记日志

过滤器与拦截器的区别

  • 拦截器是基于java的反射机制的,而过滤器是基于函数回调
  • 过滤器依赖与servlet容器,而拦截器不依赖与servlet容器
  • 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
  • 在action的生命周期中,拦截器可以多次被调用,过滤器时在容器初始化的时候初始化一次,请求一次调用一次。

AOP

1.AOP的概念
  • 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
  • AOP的工作重心在于如何将增强应用于目标对象的连接点上,这包括第一,如何通过切点和增强定位到连接点,第二,如何在增强中编写切面代码。
AOP重点术语介绍
  • Aspect(切面): 通常是一个类,里面可以定义切入点和通知
  • JointPoint(连接点): 程序执行过程中明确的点,一般是方法的调用
  • Advice(通知): AOP在特定的切入点上执行的增强处理,有before,after,afterReturning,afterThrowing,around
  • Pointcut(切入点): 就是带有通知的连接点,在程序中主要体现为书写切入点表达式
  • 目标对象(Target): 增强逻辑的织入目标类
  • 引介(Introduction): 引介是特殊的增强,他为类添加一些属性和方法。
  • 织入(Weaving): 将增强添加到目标类的具体链接点的过程。
  • AOP代理:AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类
3.AOP的作用
  • 日志记录
  • 性能统计
  • 安全控制
  • 事务处理
  • 异常处理
  • 只能应用于由 Spring 容器管理的 bean。

过滤器,拦截器,AOP的区别

  • 面向切面拦截的是类的元数据(包、类、方法名、参数等),相对于拦截器更加细致,而且非常灵活,拦截器只能针对URL做拦截,而AOP针对具体的代码,能够实现更加复杂的业务逻辑。
  • Spring AOP和拦截器一样,都是AOP的实现方式的一种,均使用代理模式实现。
  • Spring AOP的注解有@Before、@After、@AfterReturning、@AfterThrowing、@Around,可以更灵活的配置要监听处理的Bean。
  • 拦截器只对action负责,作用层面一般位于Controller层,Spring AOP主要是拦截对Spring管理的Bean的访问,一般作用与Service层

三者执行顺序: 过滤器 -> 拦截器 -> AOP

最详细的讲解过滤器,拦截器,AOP的区别相关推荐

  1. SpringBoot的过滤器拦截器AOP和异常处理器

    目录 前言 过滤器 创建过滤器 拦截器 创建拦截器 配置拦截器 AOP 创建AOP 异常处理器 创建异常处理器 测试请求的执行过程 创建接口 发送请求 前言 过滤器.拦截器.AOP.异常处理器是搭建系 ...

  2. 过滤器(Filter)和拦截器(Interceptor)的区别

    来自:http://www.cnblogs.com/luoyun/archive/2013/01/04/2844274.html 过滤器(Filter)和拦截器(Interceptor)的区别 Fil ...

  3. Filter(过滤器) 和 interceptor(拦截器)的区别

    Filter(过滤器) 和 interceptor(拦截器)的区别 1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容 ...

  4. 过滤器(Filter)与拦截器(Interceptor )区别(转)

    原文地址:https://www.cnblogs.com/junzi2099/p/8022058.html#_labelTop 原文地址:https://www.cnblogs.com/junzi20 ...

  5. 一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了

    周末有个小伙伴加我微信,向我请教了一个问题:老哥,「过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊?」 听到题目我的第一感觉就是:「简单」! 毕竟这两种工具开发中用到的频 ...

  6. 过滤器 拦截器 区别

    转 http://www.cnblogs.com/wangyuyu/archive/2013/07/02/3167354.html 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过 ...

  7. tomcat 拦截指定url_一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了

    点击" 程序员内点事 "关注,选择" 设置星标 " 坚持学习,好文每日送达! 周末有个小伙伴加我微信,向我请教了一个问题:老哥,「过滤器 (Filter) 和 ...

  8. 过滤器 和 拦截器 6个区别,别再傻傻分不清了

    周末有个小伙伴加我微信,向我请教了一个问题:老哥,过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊? 听到题目我的第一感觉就是:简单! 毕竟这两种工具开发中用到的频率都相当 ...

  9. java web 过滤器 拦截器 监听器_Java中的拦截器和过滤器,可不是同一个东西

    过滤器(Filter) 过滤器就如上面的水质过滤器一样,把管道中的水进行一遍过滤再使用.过滤器基于filter接口中的doFilter回调函数,主要的用途是设置字符集.控制权限.控制转向.做一些业务逻 ...

  10. Spring Boot 系列:过滤器+拦截器+监听器

    原 Swagger 文章合并到 Spring Boot 系列:配置 Swagger2 一.过滤器 - Filter 过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请 ...

最新文章

  1. 顶会快讯|5篇AAAI2020相关论文抢先看(附GitHub代码地址)
  2. dot pairs 点_Dott入局欧洲共享单车市场 明年3月伦敦巴黎推出
  3. diffrences between ARP table and MAC address table
  4. 机器学习第五回——学习方法与学习曲线
  5. 拓端tecdat|R语言群组变量选择、组惩罚group lasso套索模型预测分析新生儿出生体重风险因素数据和交叉验证、可视化
  6. Linux下make -j加快编译速度
  7. 11.05 选择前n个记录
  8. matlab中如何画直方图,用电脑怎么画直方图,如何用matlab画直方图已知频数和组距matl...
  9. 怎么修改MAC电脑名字,三步教你修改MAC电脑的名字
  10. 怎么在linux系统中输入日历,Linux命令行上如何使用日历详解
  11. MySQL系列——MySQL实现序列(Sequence)效果
  12. 什么是Kodu---Kodu少儿编程第一天
  13. java实现文件上传功能详解
  14. PIC单片机-PWM波
  15. PCL学习笔记5-sample consensus采样一致性算法
  16. cml sml区别_.CML与SML有何联系和区别?
  17. 录音类MediaRecorder的简单应用-录音频
  18. 读书笔记-人月神话9
  19. 设计师的助手lt;精品辅助软件下载集…
  20. 专升本-计算机公共课考点(7)——计算机网络基础

热门文章

  1. 检测键盘的 CAPS LOCK 开关
  2. VCS带UPF的RTL低功耗仿真介绍
  3. MSM8937的sbl1和CDT
  4. 乐鑫esp8266学习rtos3.0笔记第8篇:esp8266-12模块基于rtos3.0 SDK编程扫描周围获取附近可用的 Wi-Fi 热点路由器信息,同样适合esp32。(附带demo)
  5. 疫情期间都用上哪些热点技术?AI、5G、RTC,大数据纷纷登场
  6. javascript手册安卓版_javascript手册
  7. Excel如何随机抽取姓名
  8. 【华为OD机试真题 JS】解压报文
  9. 排列组合思维导图_图形推理 思维导图 百度文库
  10. python _滑动时间窗