chain of responsitive pattern

master
terry 3 years ago
parent 76d7dcd0df
commit 0e348a8902

@ -0,0 +1,5 @@
package cor;
public interface Filter {
void doFilter(Request request, Response response, FilterChain chain);
}

@ -0,0 +1,21 @@
package cor;
import java.util.ArrayList;
import java.util.List;
public class FilterChain{
List<Filter> filters = new ArrayList<>();
int index = 0;
public FilterChain add (Filter filter) {
filters.add(filter);
return this;
}
public void doFilter(Request request, Response response) {
if(index == filters.size()) return;
Filter f = filters.get(index);
index++;
f.doFilter(request, response, this);
}
}

@ -0,0 +1,11 @@
package cor;
public class HtmlFilter implements Filter{
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
request.req = request.req.replaceAll("<","[").replaceAll(">","]") + "-HtmlFilter";
chain.doFilter(request, response);
response.res += " -- HtmlFilter";
}
}

@ -0,0 +1,20 @@
package cor;
/*
* .
* servlet filterChain
*
* */
public class Main {
public static void main(String[] args) {
FilterChain filterChain = new FilterChain();
Request request = new Request();
request.req = "大家好,<script> 欢迎来到996的公司.";
Response response = new Response();
response.res = "R";
filterChain.add(new HtmlFilter()).add(new SensitiveFilter());
filterChain.doFilter(request, response);
System.out.println(request.req);
System.out.println(response.res);
}
}

@ -0,0 +1,5 @@
package cor;
public class Request {
String req;
}

@ -0,0 +1,5 @@
package cor;
public class Response {
String res;
}

@ -0,0 +1,11 @@
package cor;
public class SensitiveFilter implements Filter{
@Override
public void doFilter(Request request, Response response, FilterChain chain) {
request.req = request.req.replaceAll("996", "955") + "-sensitiveFilter";
chain.doFilter(request, response);
response.res += " -- sensitiveFilter";
}
}
Loading…
Cancel
Save