diff --git a/src/main/java/cor/Filter.java b/src/main/java/cor/Filter.java new file mode 100644 index 0000000..69d6a05 --- /dev/null +++ b/src/main/java/cor/Filter.java @@ -0,0 +1,5 @@ +package cor; + +public interface Filter { + void doFilter(Request request, Response response, FilterChain chain); +} diff --git a/src/main/java/cor/FilterChain.java b/src/main/java/cor/FilterChain.java new file mode 100644 index 0000000..1cbbbc8 --- /dev/null +++ b/src/main/java/cor/FilterChain.java @@ -0,0 +1,21 @@ +package cor; + +import java.util.ArrayList; +import java.util.List; + +public class FilterChain{ + List 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); + } +} diff --git a/src/main/java/cor/HtmlFilter.java b/src/main/java/cor/HtmlFilter.java new file mode 100644 index 0000000..cd5e684 --- /dev/null +++ b/src/main/java/cor/HtmlFilter.java @@ -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"; + } +} diff --git a/src/main/java/cor/Main.java b/src/main/java/cor/Main.java new file mode 100644 index 0000000..0d6425c --- /dev/null +++ b/src/main/java/cor/Main.java @@ -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 = "大家好,