Filter,过滤器,顾名思义,即是对数据等的过滤,预处理过程。为什么要引入过滤器呢?在平常访问网站的时候,有时候发一些敏感的信息,发出后显示时 就会将敏感信息用*等字符替代,这就是用过滤器对信息进行了处理。这只是一个简单的例子,当然,过滤器那么强大,它的功能也不可能局限于此,它不仅能预处 理数据,只要是发送过来的请求它都是可以预处理的,同时,它还可以对服务器返回的响应进行预处理,这样,大大减轻了服务器的压力。例如,实现URL级别的 权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。下面来详细介绍一下过滤器。
1.概念
过滤作用,对从客户端向服务器端发送的请求进行过滤,也可以对服务器端返回的响应进行处理。它使用户可以改变一个request和修改一个 response.。Filter类其实也是servlet,它的作用是客户端请求到达时未达到servlet处理前拦截请求,可以对HttpServletRequest进行预处理,然后再把请求转交给后续的servlet处理;它也可会HttpServletResponse返回客户端前进行后处理。
注意:过滤器是用来拦截请求和响应的,不能产生响应,而servlet是用来处理请求并产生响应的。
Filter的通常用法:
1.用户授权判断,当用户请求达到时,验证用户是否已通过登录授权。
2.日志记录处理,记录用户特殊用户请求。
3.解码处理,负责对请求的内容统一进行解码。
Filter类需要实现javax.servlet.Filter接口,该接口有3个方法:init()、doFilter()、destroy()。
Filter的配置:
1.可以使用注释方式,在filter类前使用@WebFilter注释,filterName属性指定filter名称,urlPatterns属性指定过滤路径。
2.在web.xml中配置
2.适用场合
实现URL级别的权限访问控制,过滤敏感词汇,压缩响应信息等。
3.过滤器如何实现拦截
4.Filter接口
Servlet API提供了一个Filter接口,编写的过滤器必须实现该接口。
5.Filter的生命周期
(1)Filter接口中有三个重要的方法。
(2)Filter的生命周期
Filter的创建和销毁由web服务器控制。
6.Filter对象——FilterConfig
用 户在配置filter时,可以使用<init-param>为filter配置一些初始化参数,当web容器实例化Filter对象,调用其 init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。因此开发人员在编写filter时,通过 filterConfig对象的方法,就可获得:
7.过滤器链——FilterChain
一组过滤器对某些web资源进行拦截,那么这组过滤器就称为过滤器链。过滤器的执行顺序和<filter-mapping>有关(谁在前先执行谁)。
原文:https://www.cnblogs.com/ting-3/p/10587993.html