mirror of
https://github.com/youthlql/JavaYouth.git
synced 2026-03-13 21:33:42 +08:00
图床更新,请注意查看readme
This commit is contained in:
@@ -8,7 +8,7 @@ categories:
|
||||
- 05.行为型
|
||||
keywords: 策略模式,职责链模式
|
||||
description: 不多说,看文章
|
||||
cover: 'https://npm.elemecdn.com/lql_static@latest/logo/design_patterns.jpg'
|
||||
cover: 'https://upyunimg.imlql.cn/lql_static@latest/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://npm.elemecdn.com/youthlql@1.0.0/design_patterns/behavior_type/05.02/0001.png"/>
|
||||
<img src="https://upyunimg.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://npm.elemecdn.com/youthlql@1.0.0/design_patterns/behavior_type/05.02/0002.png"/>
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.0/design_patterns/behavior_type/05.02/0002.png"/>
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user