客户端
public class Main {
public static void main(String[] args) {
String msg = "=_=,I'm sorry,I cannot do this!fuck it!=_=,fuck";
FilterChain filterChain = new FilterChain();
filterChain.add(new CharFilter()).add(new SensitiveFilter());
Request request = new Request();
request.setMsg(msg);
Response response = new Response();
filterChain.doFilter(request, response, filterChain);
System.out.println("requestMsg:"+request.getMsg());
System.out.println("responseMsg:"+response.getResponseMsg());
}
}
public interface Filter {
void doFilter(Request request,Response response,FilterChain filterChain);
}
Filter实现2public class CharFilter implements Filter{ @Override public void doFilter(Request request, Response response, FilterChain filterChain) { String msg = request.getMsg().replace('=', '^')+"----CharFilter"; request.setMsg(msg); filterChain.doFilter(request, response, filterChain); String returnMsg = response.getResponseMsg()+"-----CharFilter"; response.setResponseMsg(returnMsg); } }
FilterChain链,实现回调public class SensitiveFilter implements Filter{ @Override public void doFilter(Request request, Response response, FilterChain filterChain) { String msg = request.getMsg().replace("fuck", "****")+"-----SensitiveFilter"; request.setMsg(msg); filterChain.doFilter(request, response, filterChain); String returnMsg = response.getResponseMsg()+"-----SensitiveFilter"; response.setResponseMsg(returnMsg); } }
public class FilterChain implements Filter{ private List<Filter> list = new ArrayList<Filter>(); private int index = 0; public FilterChain add(Filter filter){ list.add(filter); return this; } public FilterChain remove(Filter filter){ if(list.contains(filter)){ list.remove(filter); } return this; } @Override public void doFilter(Request request, Response response, FilterChain filterChain) { if(index >= list.size()) return; Filter filter = list.get(index); index++; filter.doFilter(request, response, filterChain); } }
Request,Response里面包含一个String 属性