全站搜索
首页/天辰娱乐登录/注册平台
首页/天辰娱乐登录/注册平台
  • 天辰娱乐注册
  • 天辰娱乐登录
  • 天辰娱乐招商QQ
  • spring 过滤器和拦截器
    作者:admin 发布于:2023-11-26 17:06 文字:【】【】【

      AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想,并不是一种具体的实现,谈到实现一般有Filter和代理模式两种常见的使用方式,spring中的AOP也是封装代理模式完成的,可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP利用封装、继承和多态把一切事物打造成对象结构,但是对于所有对象中都存在的一些公共行为,OOP就显得无能为力,也就是说。抽象和接口虽好,但对所有不相干的对象建立共同的接口或父类未免有些生硬,例如日志功能,日志代码几乎散布在所有的对象层次中,而它和散布到对象的核心功能毫无关系,对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。因此,为减少这种大量的重复代码,面向切面技术诞生了,AOP和OOP的关系好似JSP和Servlet的关系,以此之长,补彼之短。

      spring 中拦截器 与servlet 的filter 有相似之处.比如二者都是aop 编程思想的体现都能实现权限检查,日志记录等.

      使用范围不同 Filter 是Servlet 规定的.只能用于web 程序.而拦截器既可以用于Web 程序,也可以用于Apllicatioon,Swing程序中。

      规范不同:Filter是在SerVlet 规范定义的,是Servlet容器支持的。而拦截器是在Spring 容器内的,Spring 框架所支持的。

      使用资源不同:同其他代码块一样,拦截器也是一个Spring的组件,归Spring 管理。配置在Spring 中,因此能使用Spring 中的任何资源,对象,例如Service对象,数据源,事务管理等。通过Ioc注入到拦截器即可。而filter 则不能。

      深度不同:Filter 只在Servlet前后起作用,而拦截器能深入到方法前后,异常抛出前后因而拦截器的使用具有更大的弹性,所以在spring 中优先使用拦截器。

      Java中常见的AOP技术有两个,分别是Filter和代理模式(也可以称为过滤器和拦截器),Filter是基于回调函数(请看《Java回调机制解析》),代理模式是基于Java反射技术,代理模式又分为静态代理和动态代理,动态代理就是拦截器的简单实现。(过滤器和拦截器的区别可参见《过滤器和拦截器的区别》)他们各自实现的功能不同,原理如出一辙。如下图,以添加用户为例,采用Module1架构模式,从图中可以看出无论程序从左向右或者从右向左执行都必须经过Filter,Filter在Request到达JSP(Servlet)前截获Request并进行预处理,也可以在Response离开JSP(Servlet)时处理Response,然后对Request进行统一的设置后继续向后传递,比如可以在Filter完成字符集的设置,用户身份的识别,敏感词汇的过滤等等,配置Filter个数不限。

      下面就以设置字符集为例,首先创建一个Class文件,并让他实现Filter接口,覆写init和doFilter,代码如下:

      Filter虽不是一个Servlet,但它需要在web.xml文件中配置之后才能使用,具体解释看代码中的注释,如下:

      其中,FilterChain维护了一个链表,链表中存放着配置对象的链条,每次用户调用 一次chain.doFilter(request, response),链表就去取下一个配置对象,再通过配置对象 得到下一个filter,然后调用该filter,接着在filter里写的逻辑就被执行了。

    相关推荐
  • 裕富宝厨具设备有限公司
  • spring 过滤器和拦截器
  • 详谈springboot过滤器和拦截器的实现及区别
  • 工业企业用水要保障 居民用水也要保障 “黄河”之争又起
  • 过滤器与拦截器的区别是什么?
  • 过滤器 和 拦截器的 6个区别别再傻傻分不清了
  • 法兰式保安过滤器工作原理和技术参数 过滤器分类 型号表
  • Java中的拦截器和过滤器有什么区别
  • OpenSea: NFT市场的革命者
  • 过滤器规格型号表大全
  • 脚注信息
    Copyright © 2026 首页/天辰娱乐登录/注册平台 TXT地图 HTML地图 XML地图