环境:Filter在Java8Servlet中使用的设计模式是责任链设计模式。我们可以定义一组过滤器,然后顺序处理数据。责任链设计模式是一种行为模式。UML图如下:Filter的执行过程如下:接下来我们要实现一个FilterFilter.java接口publicinterfaceFilter{voiddoFilter(Requestrequest,Responseresponse,FilterChainchain);}FilterChain.java关键调用链publicclassFilterChainimplementsFilter{privateListfilters=newArrayList<>();privateintposition=0;publicvoiddoFilter(Requestrequest,Responseresponse,FilterChainchain){if(position>filters.size()-1){return;}Filterfilter=filters.get(this.position++);filter.doFilter(request,response,this);}//构建需要调用的Filter链(Requestrequest,Responseresponse,FilterChainchain){System.out.println("LoginFilterentry...");chain.doFilter(request,response,chain);System.out.println("LoginFilterover...");}}publicclassCharFilterimplementsFilter{@OverridepublicvoiddoFilter(Requestrequest,Responseresponse,FilterChainchain){System输出.println("CharFilterentry...");chain.doFilter(request,response,chain);System.out.println("CharFilterover...");}}publicclassGrantFilterimplementsFilter{@OverridepublicvoiddoFilter(Requestrequest,Responseresponse,FilterChainchain){System.out.println("GrantFilterentry...");chain.doFilter(request,response,chain);System.out.println("GrantFilterover...");}}clientpublicstaticvoidmain(String[]args){LoginFilterloginFilter=newLoginFilter();CharFiltercharFilter=newCharFilter();GrantFiltergrantFilter=newGrantFilter();FilterChainchain=newFilterChain();chain.addFilter(loginFilter).addFilter(charFilter).addFilter(grantFilter);();chain.doFilter(request,response,null);}运行结果按照添加Filter的顺序,请求时先添加的先执行,返回时后添加的先执行。javaweb中的Filter不也是一样吗!!!