基于SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系
一 简介 (1)过滤器: 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等 关于过滤器的一些用法可以参考我写过的这些 文章 : 继承HttpServletRequestWrapper以实现在Filter中修改HttpServletRequest的参数 :https://www.zifangsky.cn/677.html 在SpringMVC中使用过滤器(Filter)过滤容易引发XSS的危险字符 :https://www.zifangsky.cn/683.html (2)拦截器: 依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于 Java 的反射机制,属于面向切面 编程 ( AOP )的一种运用。由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入( DI )进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理