Subtitle [/! –empirenews.page–]

  

  Next, let’s implement a Filter

  Filter.java interface

  public interface Filter {

  void doFilter(Request request, Response response, FilterChain chain) ;

  }

  FilterChain.java’s Key Call Chain

  public class FilterChain implements Filter{

  private List filters = new ArrayList<>() ;

  private int position = 0 ;

  public void doFilter(Request request, Response response, FilterChain chain) {

  if (position > filters.size() – 1) {

  return ;

  }

  Filter filter = filters.get(this.position++) ;

  filter.doFilter(request, response, this) ;

  }

  //Build the Filter chain that needs to be called.

  public FilterChain addFilter(Filter filter) {

  this.filters.add(filter) ;

  return this ;

  }

  }

  Filter related subclass

  public class LoginFilter implements Filter {

  @Override

  public void doFilter(Request request, Response response, FilterChain chain) {

  System.out.println("LoginFilter entry…") ;

  chain.doFilter(request, response, chain) ;

  System.out.println("LoginFilter over…") ;

  }

  }

  public class CharFilter implements Filter {

  @Override

  public void doFilter(Request request, Response response, FilterChain chain) {

  System.out.println("CharFilter entry…") ;

  chain.doFilter(request, response, chain) ;

  System.out.println("CharFilter over…") ;

  }

  }

  public class GrantFilter implements Filter {

  @Override

  public void doFilter(Request request, Response response, FilterChain chain) {

  System.out.println("GrantFilter entry…") ;

  chain.doFilter(request, response, chain) ;

  System.out.println("GrantFilter over…") ;

  }

  }

  client

  public static void main(String[] args) {

  LoginFilter loginFilter = new LoginFilter() ;

  CharFilter charFilter = new CharFilter() ;

  GrantFilter grantFilter = new GrantFilter() ;

  FilterChain chain = new FilterChain() ;

  chain.addFilter(loginFilter).addFilter(charFilter).addFilter(grantFilter) ;

  Request request = new Request() ;

  Response response = new Response() ;

  chain.doFilter(request, response, null) ;

  }

  Running result

  (Editor: Ocean Information Network)

  [Disclaimer] The contents of this site are all from the Internet, and its related remarks only represent the author’s personal views, not the position of this site. If you have no intention of infringing on your rights, please contact the webmaster to delete the relevant content in time!


Posted

in

by

Tags: