日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring boot 拦截器获取controller返回的数据_高级码农Spring Boot实战与进阶之过滤器和拦截器的使用及其区别...

發布時間:2025/4/16 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

三、過濾器和攔截器的區別

主要區別:

  • 攔截器是基于Java的反射機制的,而過濾器是基于函數回調。
  • 攔截器不依賴于servlet容器,過濾器依賴于servlet容器。
  • 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
  • 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
  • 在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次
  • 攔截器可以獲取IOC容器中的各個bean(基于FactoryBean接口 ),而過濾器就不行,在攔截器里注入一個service,可以調用業務邏輯。
  • 本質區別:
    從靈活性上說攔截器功能更強大些,Filter能做的事情它都能做,而且可以在請求前,請求后執行,比較靈活。Filter主要是針對URL地址做一個編碼的事情、過濾掉沒用的參數、安全校驗,其他的還是建議用interceptor。

    執行順序:

    • 【過濾器】開始執行
    • 【攔截器】處理前
    • com.boot.filter.controller.HelloController
    • Controller:Hello World!
    • 【攔截器】處理中
    • 【攔截器】耗時:20ms
    • 【攔截器】處理后
    • 【攔截器】耗時:20ms
    • 【過濾器】耗時:27ms
    • 【過濾器】結束執行

    過濾前-----攔截前-----Action處理-----攔截后-----過濾后。

    總結

    以上是生活随笔為你收集整理的spring boot 拦截器获取controller返回的数据_高级码农Spring Boot实战与进阶之过滤器和拦截器的使用及其区别...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。