[code]
package filter;
public interface Filter {
public abstract void doProcess(FilterChain chains, String request, String response);
}
package filter;
public class AuditFilter implements Filter {
public void doProcess(FilterChain chains, String request, String response) {
System.out.println("AuditFilter begin!");
chains.processFilter(request, response);
System.out.println("AuditFilter end!");
}
}
package filter;
public class SecurityFilter implements Filter {
public void doProcess(FilterChain chains, String request, String response) {
System.out.println("SecurityFilter begin!");
chains.processFilter(request, response);
System.out.println("SecurityFilter end!");
}
}
package filter;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class FilterChain {
private List filters;
Iterator iter;
public FilterChain() {
filters = new ArrayList();
}
public void addFilter(Filter filter) {
filters.add(filter);
iter= filters.iterator();
}
public void processFilter(String request, String response) {
if(iter.hasNext()) {
Filter filter = (Filter) iter.next();
filter.doProcess(this, request, response);
}
}
}
package filter;
public class FilterManager {
private FilterChain chains;
public void execute(String request, String response) {
chains.addFilter(new AuditFilter());
chains.addFilter(new SecurityFilter());
chains.processFilter(request, response);
}
public static void main(String[] args) {
FilterManager fm = new FilterManager();
fm.chains = new FilterChain();
fm.execute(null, null);
}
}
[/code]
下面是控制台输出
AuditFilter begin!
SecurityFilter begin!
SecurityFilter end!
AuditFilter end!
package filter;
public interface Filter {
public abstract void doProcess(FilterChain chains, String request, String response);
}
package filter;
public class AuditFilter implements Filter {
public void doProcess(FilterChain chains, String request, String response) {
System.out.println("AuditFilter begin!");
chains.processFilter(request, response);
System.out.println("AuditFilter end!");
}
}
package filter;
public class SecurityFilter implements Filter {
public void doProcess(FilterChain chains, String request, String response) {
System.out.println("SecurityFilter begin!");
chains.processFilter(request, response);
System.out.println("SecurityFilter end!");
}
}
package filter;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class FilterChain {
private List filters;
Iterator iter;
public FilterChain() {
filters = new ArrayList();
}
public void addFilter(Filter filter) {
filters.add(filter);
iter= filters.iterator();
}
public void processFilter(String request, String response) {
if(iter.hasNext()) {
Filter filter = (Filter) iter.next();
filter.doProcess(this, request, response);
}
}
}
package filter;
public class FilterManager {
private FilterChain chains;
public void execute(String request, String response) {
chains.addFilter(new AuditFilter());
chains.addFilter(new SecurityFilter());
chains.processFilter(request, response);
}
public static void main(String[] args) {
FilterManager fm = new FilterManager();
fm.chains = new FilterChain();
fm.execute(null, null);
}
}
[/code]
下面是控制台输出
AuditFilter begin!
SecurityFilter begin!
SecurityFilter end!
AuditFilter end!