From 0e348a89020005d2354845986a92de0c78d7dad9 Mon Sep 17 00:00:00 2001 From: terry <724796052@qq.com> Date: Mon, 4 Jul 2022 22:04:58 +0800 Subject: [PATCH] chain of responsitive pattern --- src/main/java/cor/Filter.java | 5 +++++ src/main/java/cor/FilterChain.java | 21 +++++++++++++++++++++ src/main/java/cor/HtmlFilter.java | 11 +++++++++++ src/main/java/cor/Main.java | 20 ++++++++++++++++++++ src/main/java/cor/Request.java | 5 +++++ src/main/java/cor/Response.java | 5 +++++ src/main/java/cor/SensitiveFilter.java | 11 +++++++++++ 7 files changed, 78 insertions(+) create mode 100644 src/main/java/cor/Filter.java create mode 100644 src/main/java/cor/FilterChain.java create mode 100644 src/main/java/cor/HtmlFilter.java create mode 100644 src/main/java/cor/Main.java create mode 100644 src/main/java/cor/Request.java create mode 100644 src/main/java/cor/Response.java create mode 100644 src/main/java/cor/SensitiveFilter.java 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 = "大家好,