JavaWeb三大组件:servlet、filter、listener
servlet2.3版本后增加的新功能,运行在服务器端的程序,在与之相关的servlet和jsp页面之前运行。
作用:过滤请求和响应
应用场景:自动登录、统一编码、过滤一些敏感词汇或特殊符号
ps:针对处理编码乱码时,绑定路径使用“/”,即所有向servlet发送请求或者响应都需经过这个过滤器。
filter创建的流程:
编写一个类实现一个filter接口,重写所有的方法;然后配置文件web.xml绑定路径。
filter方法:
init(FilterConfig):初始化
doFilter(ServletRequest req, ServletResponse res, FilterChain chain):执行过滤的方法
destroy():销毁
Filter生命周期:
创建:项目启动时,服务器创建一个filter对象,调用init方法实现初始化操作。每当请求来的时候,服务器便会获得一个线程,执行doFilter方法。
销毁:当服务器正常关闭或者移除项目时,执行destroy()方法销毁。
ps:filter过滤器是一个单实例多线程。
filter过滤器的url—patten的配置(web.xml):
1.完全匹配:以“/”开头。例如:/aa/bb.jsp
2.目录匹配:以“/”开头,以“ * ”结束。例如:/aa/
3.后缀名匹配:以“ * ”开头。例如“ *.jsp”
Filterchain过滤链:多个filter组合在一起
执行顺序:多个filter过滤器的执行顺序是由web.xml中的filter-mapping的位置决定的。当一个filter接收到请求时,调用chain.doFilter放行才能执行下一个filter。若为最后一个filter,调用chain.dofilter才能访问资源。
ps:chain.doFilter()方法为放行,不执行这个方法,无法将请求传递给下一个filter或者servlet。
补:过滤链意味着一个filter可以匹配多个路径,也可以让多个filter匹配一个路径(按照filter的配置顺序进行)。
Filter—过滤器
最新推荐文章于 2021-07-11 12:14:06 发布