Java 过滤器的顺序

版权声明:大家好,我是笨笨,笨笨的笨,笨笨的笨,转载请注明出处,谢谢! https://blog.csdn.net/jx520/article/details/84574887

过滤器的顺序由 web.xml 文件中 <filter-mapping>的顺序决定,从上到下

现有三个过滤器

  <filter>
    <filter-name>AFilter</filter-name>
    <filter-class>com.jerry.filter.AFilter</filter-class>
  </filter>
  <filter>
    <filter-name>BFilter</filter-name>
    <filter-class>com.jerry.filter.BFilter</filter-class>
  </filter>
  <filter>
    <filter-name>CFilter</filter-name>
    <filter-class>com.jerry.filter.CFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>AFilter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>BFilter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>CFilter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>

逻辑如下

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// 过滤器预处理逻辑代码。。。		
		System.out.println(this.getClass().getName() + " 预处理");
		
		// 调用下一个过滤器
		chain.doFilter(request, response);
		
		// 过滤器后处理逻辑代码。。。	
		System.out.println(this.getClass().getName() + " 后处理");
	}

输出如下

com.jerry.filter.AFilter 预处理
com.jerry.filter.BFilter 预处理
com.jerry.filter.CFilter 预处理
调用:service
调用:doGet
com.jerry.filter.CFilter 后处理
com.jerry.filter.BFilter 后处理
com.jerry.filter.AFilter 后处理

猜你喜欢

转载自blog.csdn.net/jx520/article/details/84574887