更新所有文章的图床,旧图床由于一些原因可能会逐渐失效

This commit is contained in:
youthlql
2022-03-15 01:00:37 +08:00
parent ed5227bc89
commit 7c206cc151
52 changed files with 781 additions and 781 deletions

View File

@@ -8,7 +8,7 @@ categories:
- 05.行为型
keywords: 策略模式,职责链模式
description: 不多说,看文章
cover: 'https://unpkg.zhimg.com/youthlql@1.0.0/design_patterns/logo.jpg'
cover: 'https://gitee.com/youthlql/randombg/raw/master/logo/design_patterns.jpg'
abbrlink: 2c3cc5fd
date: 2021-08-01 15:51:58
---
@@ -1171,7 +1171,7 @@ public class SensitiveWordFilter {
Servlet Filter 是 Java Servlet 规范中定义的组件,翻译成中文就是过滤器,它可以实现对 HTTP 请求的过滤功能,比如鉴权、限流、记录日志、验证参数等等。因为它是 Servlet 规范的一部分,所以,只要是支持 Servlet 的 Web 容器比如Tomcat、Jetty 等),都支持过滤器功能。为了帮助你理解,我画了一张示意图阐述它的工作原理,如下所示。
<img src="https://unpkg.zhimg.com/youthlql@1.0.0/design_patterns/behavior_type/05.02/0001.png"/>
<img src="https://img.imlql.cn/youthlql@1.0.0/design_patterns/behavior_type/05.02/0001.png"/>
在实际项目中,我们该如何使用 Servlet Filter 呢?我写了一个简单的示例代码,如下所示。添加一个过滤器,我们只需要定义一个实现 javax.servlet.Filter 接口的过滤器类,并且将它配置在 web.xml 配置文件中。Web 容器启动的时候,会读取 web.xml 中的配置,创建过滤器对象。当有请求到来的时候,会先经过过滤器,然后才由 Servlet 来处理。
@@ -1279,7 +1279,7 @@ ApplicationFilterChain 中的 doFilter() 函数的代码实现比较有技巧,
1. 刚刚讲了 Servlet Filter现在我们来讲一个功能上跟它非常类似的东西Spring Interceptor翻译成中文就是拦截器。尽管英文单词和中文翻译都不同但这两者基本上可以看作一个概念都用来实现对 HTTP 请求进行拦截处理。
2. 它们不同之处在于Servlet Filter 是 Servlet 规范的一部分,实现依赖于 Web 容器。Spring Interceptor 是 Spring MVC 框架的一部分,由 Spring MVC 框架来提供实现。客户端发送的请求,会先经过 Servlet Filter然后再经过 Spring Interceptor最后到达具体的业务代码中。我画了一张图来阐述一个请求的处理流程具体如下所示。
<img src="https://unpkg.zhimg.com/youthlql@1.0.0/design_patterns/behavior_type/05.02/0002.png"/>
<img src="https://img.imlql.cn/youthlql@1.0.0/design_patterns/behavior_type/05.02/0002.png"/>