Skip to content

Commit 9cca757

Browse files
committed
springboot 自定义拦截器
1 parent b3055d6 commit 9cca757

26 files changed

+608
-13
lines changed

Diff for: README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@
3535
5. **[ Spring Boot JPA 基础:常见操作解析](./docs/basis/springboot-jpa.md)**
3636
6. **[JPA 中非常重要的连表查询就是这么简单](./docs/basis/springboot-jpa-lianbiao.md)**
3737
7. [SpringBoot 实现过滤器](./docs/basis/springboot-filter.md)
38-
8. [整合 SpringBoot+Mybatis](./docs/basis/springboot-mybatis.md)[SpirngBoot2.0+ 的 SpringBoot+Mybatis 多数据源配置](./docs/basis/springboot-mybatis-mutipledatasource.md)
38+
8. [SpringBoot 实现拦截器](./docs/basis/springboot-interceptor.md)
39+
9. [整合 SpringBoot+Mybatis](./docs/basis/springboot-mybatis.md)[SpirngBoot2.0+ 的 SpringBoot+Mybatis 多数据源配置](./docs/basis/springboot-mybatis-mutipledatasource.md)
3940

4041
### 进阶
4142

Diff for: docs/basis/RestControllerVSController.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
周末的时候分享了一个技术session,讲到了@RestController@Controller,当时没有太讲清楚,因为 team 里很多同事之前不是做 Java的,所以对这两个东西不太熟悉,于是写了篇文章整理了一下。
1+
周末的时候分享了一个技术session,讲到了`@RestController``@Controller`,当时没有太讲清楚,因为 team 里很多同事之前不是做 Java的,所以对这两个东西不太熟悉,于是写了篇文章整理了一下。
22

33
## @RestController vs @Controller
44

Diff for: docs/basis/springboot-filter.md

+27-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
### 1. Filter 介绍
22

3-
Filter 过滤器这个概念应该大家不会陌生,特别是对与从 Servlet 开始入门学 Java 后台的同学来说。那么这个东西我们能做什么呢?Filter 过滤器主要是用来过滤用户请求的,它允许我们对用户请求进行前置处理和后置处理,比如实现 URL 级别的权限控制、过滤非法请求等等。Filter 过滤器是面向切面编程——AOP的具体实现(AOP切面编程只是一种编程思想而已)。
3+
Filter 过滤器这个概念应该大家不会陌生,特别是对与从 Servlet 开始入门学 Java 后台的同学来说。那么这个东西我们能做什么呢?Filter 过滤器主要是用来过滤用户请求的,它允许我们对用户请求进行前置处理和后置处理,比如实现 URL 级别的权限控制、过滤非法请求等等。Filter 过滤器是面向切面编程——AOP 的具体实现(AOP切面编程只是一种编程思想而已)。
44

55
另外,Filter 是依赖于 Servlet 容器,`Filter`接口就在 Servlet 包下面,属于 Servlet 规范的一部分。所以,很多时候我们也称其为“增强版 Servlet”。
66

@@ -35,11 +35,11 @@ public interface Filter {
3535

3636
### 3. 如何自定义Filter
3737

38-
下面提供两种方法。
38+
下面提供两种方法。
3939

4040
#### 3.1自己手动注册配置实现
4141

42-
自定义的 Filter 需要实现`javax.Servlet.Filter`接口,并重写接口中定义的3个方法。
42+
**自定义的 Filter 需要实现`javax.Servlet.Filter`接口,并重写接口中定义的3个方法。**
4343

4444
`MyFilter.java`
4545

@@ -80,7 +80,7 @@ public class MyFilter implements Filter {
8080

8181
`MyFilterConfig.java`
8282

83-
在配置中注册自定义的过滤器。
83+
**在配置中注册自定义的过滤器。**
8484

8585
```java
8686
@Configuration
@@ -102,7 +102,7 @@ public class MyFilterConfig {
102102

103103
#### 3.2 通过提供好的一些注解实现
104104

105-
在自己的过滤器的类上加上`@WebFilter` 然后在这个注解中通过它提供好的一些参数进行配置。
105+
**在自己的过滤器的类上加上`@WebFilter` 然后在这个注解中通过它提供好的一些参数进行配置。**
106106

107107
```java
108108
@WebFilter(filterName = "MyFilterWithAnnotation", urlPatterns = "/api/*")
@@ -116,7 +116,7 @@ public class MyFilterWithAnnotation implements Filter {
116116

117117
### 4.定义多个拦截器,并决定它们的执行顺序
118118

119-
加入我们现在又加入了一个过滤器怎么办?
119+
**假如我们现在又加入了一个过滤器怎么办?**
120120

121121
`MyFilter2.java`
122122

@@ -153,7 +153,7 @@ public class MyFilter2 implements Filter {
153153

154154
```
155155

156-
在配置中注册自定义的过滤器,通过`FilterRegistrationBean``setOrder` 方法可以决定 Filter 的执行顺序。
156+
**在配置中注册自定义的过滤器,通过`FilterRegistrationBean``setOrder` 方法可以决定 Filter 的执行顺序。**
157157

158158
```java
159159
@Configuration
@@ -185,7 +185,26 @@ public class MyFilterConfig {
185185
}
186186
```
187187

188-
实际测试效果如下:
188+
**自定义 Controller 验证过滤器**
189+
190+
```java
191+
import org.springframework.web.bind.annotation.GetMapping;
192+
import org.springframework.web.bind.annotation.RequestMapping;
193+
import org.springframework.web.bind.annotation.RestController;
194+
195+
@RestController
196+
@RequestMapping("/api")
197+
public class MyController {
198+
199+
@GetMapping("/hello")
200+
public String getHello() throws InterruptedException {
201+
Thread.sleep(1000);
202+
return "Hello";
203+
}
204+
}
205+
```
206+
207+
**实际测试效果如下:**
189208

190209
```shell
191210
2019-10-22 22:32:15.569 INFO 1771 --- [ main] g.j.springbootfilter.filter.MyFilter2 : 初始化过滤器2
@@ -198,4 +217,3 @@ public class MyFilterConfig {
198217
该用户的请求已经处理完毕,请求花费的时间为2:1037
199218
```
200219

201-
源代码地址:https://github.com/Snailclimb/springboot-guide/tree/master/source-code/basis/springboot-filter

0 commit comments

Comments
 (0)