日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時間:2025/4/16 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring boot 拦截器获取controller返回的数据_高级码农Spring Boot实战与进阶之过滤器和拦截器的使用及其区别... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

眾所周知的Spring Boot是很優(yōu)秀的框架,它的出現(xiàn)簡化了新Spring應(yīng)用的初始搭建以及開發(fā)過程,大大減少了代碼量,目前已被大多數(shù)企業(yè)認(rèn)可和使用。這個專欄將對Spring Boot框架從淺入深,從實戰(zhàn)到進(jìn)階,不但我們要懂得如何去使用,還要去剖析框架源碼,學(xué)習(xí)其優(yōu)秀的設(shè)計思想。

一、過濾器

過濾器是處于客戶端與服務(wù)器資源文件之間的一道過濾網(wǎng),在訪問資源文件之前,通過一系列的過濾器對請求進(jìn)行修改、判斷等,把不符合規(guī)則的請求在中途攔截或修改。也可以對響應(yīng)進(jìn)行過濾,攔截或修改響應(yīng)。

1、自定義一個TimeFilter類

2、配置方式

  • @WebFilter注解的urlPatterns屬性配置了哪些請求可以進(jìn)入該過濾器,/*表示所有請求。
  • 除了在過濾器類上加注解外,我們也可以通過FilterRegistrationBean來注冊過濾器。定義一個TimeFilterConfig類,加上@Configuration注解表明其為配置類,然后通過FilterRegistrationBean來注冊過濾器。

3、項目演示

控制臺輸出

  • 【過濾器】開始執(zhí)行
  • Controller:Hello World!
  • 【過濾器】耗時:26ms
  • 【過濾器】結(jié)束執(zhí)行

二、攔截器

攔截器,是面向切面編程(AOP,Aspect Oriented Program)的。就是在Service或者一個方法前調(diào)用一個方法,或者在方法后調(diào)用一個方法。比如動態(tài)代理就是攔截器的簡單實現(xiàn),在調(diào)用方法前打印出字符串(或者做其它業(yè)務(wù)邏輯的操作),也可以在調(diào)用方法后打印出字符串,甚至在拋出異常的時候做業(yè)務(wù)邏輯的操作。

1、定義一個TimeInterceptor類

2、在TimeInterceptorConfig中通過InterceptorRegistry注冊過濾器。

3、項目演示

控制臺輸出

  • 【攔截器】處理前
  • com.boot.filter.controller.HelloController
  • Controller:Hello World!
  • 【攔截器】處理中
  • 【攔截器】耗時:22ms
  • 【攔截器】處理后
  • 【攔截器】耗時:22ms

三、過濾器和攔截器的區(qū)別

主要區(qū)別:

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

    執(zhí)行順序:

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

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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。