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
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!