您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
8_Filter_细节_过滤器链(多个过滤器)(相同拦截规则时候的优先级)
发布时间:2022-09-25 23:17:38编辑:雪饮阅读()
多个过滤器时候称为过滤器链(我认为更严谨的说法是加上一个条件“相同的拦截规则时”)。
多个过滤器时候,在非web.xml中配置时,则是按filter实例类名挨个字符进行比对的,如果第一个filter的实例类名第某位大于第二个filter的实例类名的第某位后,则后面的位数就不用进行比较下去了。
比较的值以小的值优先执行,那么同样的拦截回来的时候则是正好相反(遵循先入后出原则)。
实例如:
Filter6.java:
package package3;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/index.jsp")
public class Filter6 implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("Filter6拦截");
chain.doFilter(req, resp);
System.out.println("Filter6回来");
}
public void init(FilterConfig config) throws ServletException {
}
}
Filter17.java:
package package3;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/index.jsp")
public class Filter17 implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("Filter17拦截");
chain.doFilter(req, resp);
System.out.println("Filter17回来");
}
public void init(FilterConfig config) throws ServletException {
}
}
实际访问的output控制台输出顺序则如:
Filter17拦截
Filter6拦截
Filter6回来
Filter17回来
关键字词:Filter,细节,过滤器链,多个过滤器,相同拦截规则时候的优先级
相关文章
- 7_Filter_细节_过滤器拦截方式配置(区分拦截浏览器直接
- 6_Filter_细节_过滤器拦截路径配置(servlet拦截与目录
- 5_Filter_细节_执行流程&生命周期(filter创建模板与生
- 4_Filter_细节_web.xml配置方式
- 3_Filter_快速入门(类似php中常用的中间件)
- 25_案例_验证码_细节处理(removeAttribute)
- 20_会话技术_Session_细节2(session实例引用地址不同
- 19_会话技术_Session_细节1(用cookie来控制session关闭
- 08_会话技术_Cookie_细节4_Cookie共享
- 06_会话技术_Cookie_细节2_Cookie存活时间