Filter:基础

过滤器与拦截器是有区别的。

Filter只会在servlet初始化时实例化一次。

Filter可以对所有的请求进行拦截过滤,而拦截器只能对controller的请求进行拦截

Filter是依赖于servlet实现,而拦截器是基于mvc的aop实现

过滤器:

依赖于servlet容器。

在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。

使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,

比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等

拦截器:

依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。

在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。

由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,

同时一个拦截器实例在一个controller生命周期之内可以多次调用。

但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理

过滤器与拦截器顺序

过滤器有哪些作用和用法

Java Web开发中的过滤器(filter)是从Servlet 2.3规范开始增加的功能,并在Servlet 2.4规范中得到增强。

对Web应用来说,过滤器是一个驻留在服务器端的Web组件,它可以截取客户端和服务器之间的请求与响应信息,并对这些信息进行过 滤。

当Web容器接受到一个对资源的请求时,它将判断是否有过滤器与这个资源相关联。

如果有,那么容器将把请求交给过滤器进行处理。在过滤器中,你可以改变请求的内容,或者重新设置请求的报头信息,然后再将请求发送给目标资源。

当目标资源对请求作出响应时候,容器同样会将响应先转发给过滤器,再过滤器中, 你可以对响应的内容进行转换,然后再将响应发送到客户端。

常见的过滤器用途主要包括:

对用户请求进行统一认证、对用户的访问请求进行记录和审核、对用户发送的数据进行过滤或替换、转换图象格式、对响应内容进行压缩以减少传输量、

对请求或响应进行加解密处理、触发资源访问事件、对XML的输出应用XSLT等。

和过滤器相关的接口主要有:Filter、FilterConfig、FilterChain

参考:

实战 | SpringBoot实现过滤器、拦截器与切片

SpringBoot中filter的使用详解及原理

 

posted @ 2018-11-10 16:17  弱水三千12138  阅读(173)  评论(0编辑  收藏  举报