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