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…
Reference in new issue