Filter过滤器学习

一、Filter简介

Filter也称为过滤器,属于servlet中常用的技术,通过它,对web服务器管理所有的web资源,实现URL级别的权限访问,压缩响应消息,过滤敏感词汇,字符编码,静态文件缓存。

二、Filter的工作流程和生命周期

Filter接口有三个方法,init(),doFilter(),destory()。

创建:Filter的创建和销毁由WEB服务器负责,WEB服务器启动时,将按照web.xml中的声明顺序,从上往下依次创建Filter的实例对象,并调用init方法进行初始化。在整个过程中,Filter对象只会被实例化依次,init()也只会被执行一次。(跟servlet一样)。通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。

销毁web容器调用destory销毁Filter,在整个过程中也只执行一次。在destroy方法中,可以释放过滤器使用的资源。

工作流程:在web.xml或使用注解注册Filter,配置Filter对哪个web资源进行拦截,web服务器每次在调用web资源时都会先调用doFilter方法。

doFilter():
1.调用目标资源前,先执行一段代码
2.是否调用目标资源(是否允许访问),用于权限判断
3.调用目标之后,让一段代码执行。

Filter链:多个Filter拦截同一个web资源的执行顺序由web.xml中的声明顺序决定,先声明的先执行。
运行过程:
Filter(A):chain.doFilter(request, response)访问目标资源; –>Filter(B):chain.doFilter(request, response)访问目标资源; ; –>Filter(C):chain.doFilter(request, response)访问目标资源; );–>Filter(C):目标资源访问结束之后的代码;–>Filter(B):目标资源访问结束之后的代码;–>Filter(A):目标资源访问结束之后的代码;
如图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhulidie/article/details/72819329