一、概念:
生活中存在着许多过滤器,比如:净水器,空气净化器等许多过滤器;
web中也存在着的filter过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。其中servlet、filter、listener称为javaweb三大组件!一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...
二、定义过滤器:
步骤:
1,定义一个类,实现接口Filter
2,复写方法
3.配置拦截路径
(1).web.xml配置
(2).注解配置
注意:该注解配置一般配置在要过滤器的类上;
三、过滤器执行流程:
1,执行过滤器
2.执行放行后的资源
3.回来执行过滤器放行代码下边的代码
四、过滤器生命周期:
1,init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。
用于加载资源
2,doFilter:每一次请求被拦截资源时,会执行。执行多次
3, destroy:在服务器关闭后, Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
五、过滤器配置详解:
1.拦截路径配置:
2.拦截方式配置:
拦截方式是资源被访问的方式!可通过以下两种方式配置:
(1)注解配置:
(2)web.xml配置:
六、过滤器链(配置多个过滤器):
1.过滤器链的执行顺序:
2.过滤器链中过滤器之间的先后顺序问题:
1,如果是注解配置的话:按照类名的字符串比较规则比较,一一对应的每个字符进行比较,
值小的先执行
例如: AFilter和BFilter, AFilter就先执行了。
Filter和Fiter12, Fiter12先执行
2,如果是web.xml配置的话: <filter-mapping>谁定义在上边,谁先执行