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"); + } +}