From 79b5f7ecf515331b88d60f98c9a8079ee74cca3f Mon Sep 17 00:00:00 2001 From: bingor Date: Tue, 18 Oct 2022 10:47:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9D=A6=E5=85=8B=E5=A4=A7=E6=88=98=EF=BC=88?= =?UTF-8?q?=E4=B8=80=E6=9C=9F=EF=BC=89-=E8=AE=BE=E8=AE=A1=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F-=E8=B4=A3=E4=BB=BB=E9=93=BE=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B9=8B=E6=A8=A1=E6=94=BEservlet=E7=9A=84=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/msb/chain/servlet/v1/Filter.java | 11 ++++++ .../com/msb/chain/servlet/v1/FilterChain.java | 32 +++++++++++++++++ .../java/com/msb/chain/servlet/v1/Main.java | 28 +++++++++++++++ .../com/msb/chain/servlet/v1/OneFilter.java | 21 +++++++++++ .../com/msb/chain/servlet/v1/Request.java | 25 +++++++++++++ .../com/msb/chain/servlet/v1/Response.java | 25 +++++++++++++ .../com/msb/chain/servlet/v1/TwoFilter.java | 21 +++++++++++ .../java/com/msb/chain/servlet/v3/Filter.java | 11 ++++++ .../com/msb/chain/servlet/v3/FilterChain.java | 35 +++++++++++++++++++ .../java/com/msb/chain/servlet/v3/Main.java | 28 +++++++++++++++ .../com/msb/chain/servlet/v3/OneFilter.java | 22 ++++++++++++ .../com/msb/chain/servlet/v3/Request.java | 25 +++++++++++++ .../com/msb/chain/servlet/v3/Response.java | 25 +++++++++++++ .../com/msb/chain/servlet/v3/TwoFilter.java | 22 ++++++++++++ .../java/com/msb/chain/servlet/v4/Filter.java | 11 ++++++ .../com/msb/chain/servlet/v4/FilterChain.java | 34 ++++++++++++++++++ .../java/com/msb/chain/servlet/v4/Main.java | 28 +++++++++++++++ .../com/msb/chain/servlet/v4/OneFilter.java | 22 ++++++++++++ .../com/msb/chain/servlet/v4/Request.java | 25 +++++++++++++ .../com/msb/chain/servlet/v4/Response.java | 25 +++++++++++++ .../com/msb/chain/servlet/v4/TwoFilter.java | 22 ++++++++++++ 21 files changed, 498 insertions(+) create mode 100644 src/main/java/com/msb/chain/servlet/v1/Filter.java create mode 100644 src/main/java/com/msb/chain/servlet/v1/FilterChain.java create mode 100644 src/main/java/com/msb/chain/servlet/v1/Main.java create mode 100644 src/main/java/com/msb/chain/servlet/v1/OneFilter.java create mode 100644 src/main/java/com/msb/chain/servlet/v1/Request.java create mode 100644 src/main/java/com/msb/chain/servlet/v1/Response.java create mode 100644 src/main/java/com/msb/chain/servlet/v1/TwoFilter.java create mode 100644 src/main/java/com/msb/chain/servlet/v3/Filter.java create mode 100644 src/main/java/com/msb/chain/servlet/v3/FilterChain.java create mode 100644 src/main/java/com/msb/chain/servlet/v3/Main.java create mode 100644 src/main/java/com/msb/chain/servlet/v3/OneFilter.java create mode 100644 src/main/java/com/msb/chain/servlet/v3/Request.java create mode 100644 src/main/java/com/msb/chain/servlet/v3/Response.java create mode 100644 src/main/java/com/msb/chain/servlet/v3/TwoFilter.java create mode 100644 src/main/java/com/msb/chain/servlet/v4/Filter.java create mode 100644 src/main/java/com/msb/chain/servlet/v4/FilterChain.java create mode 100644 src/main/java/com/msb/chain/servlet/v4/Main.java create mode 100644 src/main/java/com/msb/chain/servlet/v4/OneFilter.java create mode 100644 src/main/java/com/msb/chain/servlet/v4/Request.java create mode 100644 src/main/java/com/msb/chain/servlet/v4/Response.java create mode 100644 src/main/java/com/msb/chain/servlet/v4/TwoFilter.java diff --git a/src/main/java/com/msb/chain/servlet/v1/Filter.java b/src/main/java/com/msb/chain/servlet/v1/Filter.java new file mode 100644 index 0000000..f6eb60e --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v1/Filter.java @@ -0,0 +1,11 @@ +package com.msb.chain.servlet.v1; + +/** + * @Author bingor + * @Date 2022/10/18 10:05 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ +public interface Filter { + public void doFilter(Request request, Response response); +} diff --git a/src/main/java/com/msb/chain/servlet/v1/FilterChain.java b/src/main/java/com/msb/chain/servlet/v1/FilterChain.java new file mode 100644 index 0000000..6847214 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v1/FilterChain.java @@ -0,0 +1,32 @@ +package com.msb.chain.servlet.v1;/** + * @Author bingor + * @Date 2022/10/18 10:09 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +import java.util.ArrayList; +import java.util.List; + +/** + *@ClassName ChainFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:09 + *@Version 3.0 + */ +public class FilterChain implements Filter { + private List filters = new ArrayList<>(); + + public FilterChain addFilter(Filter filter) { + filters.add(filter); + return this; + } + + @Override + public void doFilter(Request request, Response response) { + for (Filter filter : filters) { + filter.doFilter(request, response); + } + } +} diff --git a/src/main/java/com/msb/chain/servlet/v1/Main.java b/src/main/java/com/msb/chain/servlet/v1/Main.java new file mode 100644 index 0000000..18fa9a1 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v1/Main.java @@ -0,0 +1,28 @@ +package com.msb.chain.servlet.v1;/** + * @Author bingor + * @Date 2022/10/18 10:11 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Main + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:11 + *@Version 3.0 + */ +public class Main { + public static void main(String[] args) { + FilterChain chain = new FilterChain(); + Request request = new Request(); + request.setStr("request:"); + Response response = new Response(); + response.setStr("response:"); + + chain.addFilter(new OneFilter()).addFilter(new TwoFilter()); + chain.doFilter(request, response); + System.out.println(request.getStr()); + System.out.println(response.getStr()); + } +} diff --git a/src/main/java/com/msb/chain/servlet/v1/OneFilter.java b/src/main/java/com/msb/chain/servlet/v1/OneFilter.java new file mode 100644 index 0000000..8490fe8 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v1/OneFilter.java @@ -0,0 +1,21 @@ +package com.msb.chain.servlet.v1;/** + * @Author bingor + * @Date 2022/10/18 10:05 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName HtmlFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:05 + *@Version 3.0 + */ +public class OneFilter implements Filter { + @Override + public void doFilter(Request request, Response response) { + request.setStr(request.getStr() + "-OneFilter"); + response.setStr(response.getStr() + "-OneFilter"); + } +} diff --git a/src/main/java/com/msb/chain/servlet/v1/Request.java b/src/main/java/com/msb/chain/servlet/v1/Request.java new file mode 100644 index 0000000..92d7643 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v1/Request.java @@ -0,0 +1,25 @@ +package com.msb.chain.servlet.v1;/** + * @Author bingor + * @Date 2022/10/18 10:04 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Request + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:04 + *@Version 3.0 + */ +public class Request { + private String str; + + public String getStr() { + return str; + } + + public void setStr(String str) { + this.str = str; + } +} diff --git a/src/main/java/com/msb/chain/servlet/v1/Response.java b/src/main/java/com/msb/chain/servlet/v1/Response.java new file mode 100644 index 0000000..3bb7b89 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v1/Response.java @@ -0,0 +1,25 @@ +package com.msb.chain.servlet.v1;/** + * @Author bingor + * @Date 2022/10/18 10:04 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Request + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:04 + *@Version 3.0 + */ +public class Response { + private String str; + + public String getStr() { + return str; + } + + public void setStr(String str) { + this.str = str; + } +} diff --git a/src/main/java/com/msb/chain/servlet/v1/TwoFilter.java b/src/main/java/com/msb/chain/servlet/v1/TwoFilter.java new file mode 100644 index 0000000..6791c57 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v1/TwoFilter.java @@ -0,0 +1,21 @@ +package com.msb.chain.servlet.v1;/** + * @Author bingor + * @Date 2022/10/18 10:08 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName TwoFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:08 + *@Version 3.0 + */ +public class TwoFilter implements Filter { + @Override + public void doFilter(Request request, Response response) { + request.setStr(request.getStr() + "-TwoFilter"); + response.setStr(response.getStr() + "-TwoFilter"); + } +} diff --git a/src/main/java/com/msb/chain/servlet/v3/Filter.java b/src/main/java/com/msb/chain/servlet/v3/Filter.java new file mode 100644 index 0000000..fcad205 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v3/Filter.java @@ -0,0 +1,11 @@ +package com.msb.chain.servlet.v3; + +/** + * @Author bingor + * @Date 2022/10/18 10:05 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ +public interface Filter { + public void doFilter(Request request, Response response, FilterChain chain); +} diff --git a/src/main/java/com/msb/chain/servlet/v3/FilterChain.java b/src/main/java/com/msb/chain/servlet/v3/FilterChain.java new file mode 100644 index 0000000..27dd3b0 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v3/FilterChain.java @@ -0,0 +1,35 @@ +package com.msb.chain.servlet.v3;/** + * @Author bingor + * @Date 2022/10/18 10:09 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +import java.util.ArrayList; +import java.util.List; + +/** + *@ClassName ChainFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:09 + *@Version 3.0 + */ +public class FilterChain implements Filter { + private List filters = new ArrayList<>(); + private int index = 0; + + public FilterChain addFilter(Filter filter) { + filters.add(filter); + return this; + } + + @Override + public void doFilter(Request request, Response response, FilterChain chain) { + if(index == filters.size()) return; + Filter filter = filters.get(index); + index++; + filter.doFilter(request, response, chain); + return; + } +} diff --git a/src/main/java/com/msb/chain/servlet/v3/Main.java b/src/main/java/com/msb/chain/servlet/v3/Main.java new file mode 100644 index 0000000..b8fef59 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v3/Main.java @@ -0,0 +1,28 @@ +package com.msb.chain.servlet.v3;/** + * @Author bingor + * @Date 2022/10/18 10:11 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Main + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:11 + *@Version 3.0 + */ +public class Main { + public static void main(String[] args) { + FilterChain chain = new FilterChain(); + Request request = new Request(); + request.setStr("request:"); + Response response = new Response(); + response.setStr("response:"); + + chain.addFilter(new OneFilter()).addFilter(new TwoFilter()); + chain.doFilter(request, response, chain); + System.out.println(request.getStr()); + System.out.println(response.getStr()); + } +} diff --git a/src/main/java/com/msb/chain/servlet/v3/OneFilter.java b/src/main/java/com/msb/chain/servlet/v3/OneFilter.java new file mode 100644 index 0000000..614734f --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v3/OneFilter.java @@ -0,0 +1,22 @@ +package com.msb.chain.servlet.v3;/** + * @Author bingor + * @Date 2022/10/18 10:05 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName HtmlFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:05 + *@Version 3.0 + */ +public class OneFilter implements Filter { + @Override + public void doFilter(Request request, Response response, FilterChain chain) { + request.setStr(request.getStr() + "-OneFilter"); + chain.doFilter(request, response, chain); + response.setStr(response.getStr() + "-OneFilter"); + } +} diff --git a/src/main/java/com/msb/chain/servlet/v3/Request.java b/src/main/java/com/msb/chain/servlet/v3/Request.java new file mode 100644 index 0000000..60fa77b --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v3/Request.java @@ -0,0 +1,25 @@ +package com.msb.chain.servlet.v3;/** + * @Author bingor + * @Date 2022/10/18 10:04 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Request + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:04 + *@Version 3.0 + */ +public class Request { + private String str; + + public String getStr() { + return str; + } + + public void setStr(String str) { + this.str = str; + } +} diff --git a/src/main/java/com/msb/chain/servlet/v3/Response.java b/src/main/java/com/msb/chain/servlet/v3/Response.java new file mode 100644 index 0000000..112b94d --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v3/Response.java @@ -0,0 +1,25 @@ +package com.msb.chain.servlet.v3;/** + * @Author bingor + * @Date 2022/10/18 10:04 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Request + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:04 + *@Version 3.0 + */ +public class Response { + private String str; + + public String getStr() { + return str; + } + + public void setStr(String str) { + this.str = str; + } +} diff --git a/src/main/java/com/msb/chain/servlet/v3/TwoFilter.java b/src/main/java/com/msb/chain/servlet/v3/TwoFilter.java new file mode 100644 index 0000000..83b5e7d --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v3/TwoFilter.java @@ -0,0 +1,22 @@ +package com.msb.chain.servlet.v3;/** + * @Author bingor + * @Date 2022/10/18 10:08 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName TwoFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:08 + *@Version 3.0 + */ +public class TwoFilter implements Filter { + @Override + public void doFilter(Request request, Response response, FilterChain chain) { + request.setStr(request.getStr() + "-TwoFilter"); + chain.doFilter(request, response, chain); + response.setStr(response.getStr() + "-TwoFilter"); + } +} diff --git a/src/main/java/com/msb/chain/servlet/v4/Filter.java b/src/main/java/com/msb/chain/servlet/v4/Filter.java new file mode 100644 index 0000000..a3fd332 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v4/Filter.java @@ -0,0 +1,11 @@ +package com.msb.chain.servlet.v4; + +/** + * @Author bingor + * @Date 2022/10/18 10:05 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ +public interface Filter { + public void doFilter(Request request, Response response, FilterChain chain); +} diff --git a/src/main/java/com/msb/chain/servlet/v4/FilterChain.java b/src/main/java/com/msb/chain/servlet/v4/FilterChain.java new file mode 100644 index 0000000..f19bc78 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v4/FilterChain.java @@ -0,0 +1,34 @@ +package com.msb.chain.servlet.v4;/** + * @Author bingor + * @Date 2022/10/18 10:09 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +import java.util.ArrayList; +import java.util.List; + +/** + *@ClassName ChainFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:09 + *@Version 3.0 + */ +public class FilterChain { + private List filters = new ArrayList<>(); + private int index = 0; + + public FilterChain addFilter(Filter filter) { + filters.add(filter); + return this; + } + + public void doFilter(Request request, Response response) { + if(index == filters.size()) return; + Filter filter = filters.get(index); + index++; + filter.doFilter(request, response, this); + return; + } +} diff --git a/src/main/java/com/msb/chain/servlet/v4/Main.java b/src/main/java/com/msb/chain/servlet/v4/Main.java new file mode 100644 index 0000000..391ffb8 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v4/Main.java @@ -0,0 +1,28 @@ +package com.msb.chain.servlet.v4;/** + * @Author bingor + * @Date 2022/10/18 10:11 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Main + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:11 + *@Version 3.0 + */ +public class Main { + public static void main(String[] args) { + FilterChain chain = new FilterChain(); + Request request = new Request(); + request.setStr("request:"); + Response response = new Response(); + response.setStr("response:"); + + chain.addFilter(new OneFilter()).addFilter(new TwoFilter()); + chain.doFilter(request, response); + System.out.println(request.getStr()); + System.out.println(response.getStr()); + } +} diff --git a/src/main/java/com/msb/chain/servlet/v4/OneFilter.java b/src/main/java/com/msb/chain/servlet/v4/OneFilter.java new file mode 100644 index 0000000..5b6d12b --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v4/OneFilter.java @@ -0,0 +1,22 @@ +package com.msb.chain.servlet.v4;/** + * @Author bingor + * @Date 2022/10/18 10:05 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName HtmlFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:05 + *@Version 3.0 + */ +public class OneFilter implements Filter { + @Override + public void doFilter(Request request, Response response, FilterChain chain) { + request.setStr(request.getStr() + "-OneFilter"); + chain.doFilter(request, response); + response.setStr(response.getStr() + "-OneFilter"); + } +} diff --git a/src/main/java/com/msb/chain/servlet/v4/Request.java b/src/main/java/com/msb/chain/servlet/v4/Request.java new file mode 100644 index 0000000..77f6f31 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v4/Request.java @@ -0,0 +1,25 @@ +package com.msb.chain.servlet.v4;/** + * @Author bingor + * @Date 2022/10/18 10:04 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Request + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:04 + *@Version 3.0 + */ +public class Request { + private String str; + + public String getStr() { + return str; + } + + public void setStr(String str) { + this.str = str; + } +} diff --git a/src/main/java/com/msb/chain/servlet/v4/Response.java b/src/main/java/com/msb/chain/servlet/v4/Response.java new file mode 100644 index 0000000..64df40e --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v4/Response.java @@ -0,0 +1,25 @@ +package com.msb.chain.servlet.v4;/** + * @Author bingor + * @Date 2022/10/18 10:04 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName Request + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:04 + *@Version 3.0 + */ +public class Response { + private String str; + + public String getStr() { + return str; + } + + public void setStr(String str) { + this.str = str; + } +} diff --git a/src/main/java/com/msb/chain/servlet/v4/TwoFilter.java b/src/main/java/com/msb/chain/servlet/v4/TwoFilter.java new file mode 100644 index 0000000..a04b1f4 --- /dev/null +++ b/src/main/java/com/msb/chain/servlet/v4/TwoFilter.java @@ -0,0 +1,22 @@ +package com.msb.chain.servlet.v4;/** + * @Author bingor + * @Date 2022/10/18 10:08 + * @Description: com.msb.chain.servlet.v1 + * @Version: 1.0 + */ + +/** + *@ClassName TwoFilter + *@Description TODO + *@Author bingor + *@Date 2022/10/18 10:08 + *@Version 3.0 + */ +public class TwoFilter implements Filter { + @Override + public void doFilter(Request request, Response response, FilterChain chain) { + request.setStr(request.getStr() + "-TwoFilter"); + chain.doFilter(request, response); + response.setStr(response.getStr() + "-TwoFilter"); + } +}