javascript
spring boot 拦截器获取controller返回的数据_高级码农Spring Boot实战与进阶之过滤器和拦截器的使用及其区别...
眾所周知的Spring Boot是很優秀的框架,它的出現簡化了新Spring應用的初始搭建以及開發過程,大大減少了代碼量,目前已被大多數企業認可和使用。這個專欄將對Spring Boot框架從淺入深,從實戰到進階,不但我們要懂得如何去使用,還要去剖析框架源碼,學習其優秀的設計思想。
一、過濾器
過濾器是處于客戶端與服務器資源文件之間的一道過濾網,在訪問資源文件之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應。
1、自定義一個TimeFilter類
2、配置方式
- @WebFilter注解的urlPatterns屬性配置了哪些請求可以進入該過濾器,/*表示所有請求。
- 除了在過濾器類上加注解外,我們也可以通過FilterRegistrationBean來注冊過濾器。定義一個TimeFilterConfig類,加上@Configuration注解表明其為配置類,然后通過FilterRegistrationBean來注冊過濾器。
3、項目演示
控制臺輸出
- 【過濾器】開始執行
- Controller:Hello World!
- 【過濾器】耗時:26ms
- 【過濾器】結束執行
二、攔截器
攔截器,是面向切面編程(AOP,Aspect Oriented Program)的。就是在Service或者一個方法前調用一個方法,或者在方法后調用一個方法。比如動態代理就是攔截器的簡單實現,在調用方法前打印出字符串(或者做其它業務邏輯的操作),也可以在調用方法后打印出字符串,甚至在拋出異常的時候做業務邏輯的操作。
1、定義一個TimeInterceptor類
2、在TimeInterceptorConfig中通過InterceptorRegistry注冊過濾器。
3、項目演示
控制臺輸出
- 【攔截器】處理前
- com.boot.filter.controller.HelloController
- Controller:Hello World!
- 【攔截器】處理中
- 【攔截器】耗時:22ms
- 【攔截器】處理后
- 【攔截器】耗時:22ms
三、過濾器和攔截器的區別
主要區別:
本質區別:
從靈活性上說攔截器功能更強大些,Filter能做的事情它都能做,而且可以在請求前,請求后執行,比較靈活。Filter主要是針對URL地址做一個編碼的事情、過濾掉沒用的參數、安全校驗,其他的還是建議用interceptor。
執行順序:
- 【過濾器】開始執行
- 【攔截器】處理前
- com.boot.filter.controller.HelloController
- Controller:Hello World!
- 【攔截器】處理中
- 【攔截器】耗時:20ms
- 【攔截器】處理后
- 【攔截器】耗時:20ms
- 【過濾器】耗時:27ms
- 【過濾器】結束執行
過濾前-----攔截前-----Action處理-----攔截后-----過濾后。
總結
以上是生活随笔為你收集整理的spring boot 拦截器获取controller返回的数据_高级码农Spring Boot实战与进阶之过滤器和拦截器的使用及其区别...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql5.6cmd中代码_Mysql
- 下一篇: mybatis if test 用法_S