學習spring boot-攔截器Interceptor,過濾器Filter

目錄

攔截器Interceptor

過濾器Filter

關于過濾器的前置知識可以參考:

過濾器在springboot項目的應用

一,使用@Webfilter+@ServletComponentScan 注解

1 創建過濾器類實現Filter接口

2 在啟動類中添加?@ServletComponentScan 注解

二,創建過濾器配置類,注冊過濾器

1 創建過濾器類(不添加WebFilter注解)

2創建配置類, 注冊過濾器類


攔截器Interceptor

可以參考?springmvc-攔截器-CSDN博客

過濾器Filter

關于過濾器的前置知識可以參考:

javaWeb之過濾器(Filter)_javaweb中filter過濾器對象什么時候創建?-CSDN博客

過濾器在springboot項目的應用

一,使用@Webfilter+@ServletComponentScan 注解
1 創建過濾器類實現Filter接口
  • 指定過濾器順序(補充)。若存在多個過濾器且執行順序重要,可使用@Order注解指定順序。數字越小優先級越高。如@Order(1) 。
package com.it.heima.springboot06filter.filter;import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;import java.io.IOException;
@WebFilter("/user/*")
public class UserFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("正在初始化~~~~~~");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("是否滿足條件");System.out.println("如滿足條件放行~~~~~~~~");filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {System.out.println("正在銷毀~~~~~~");}
}
2 在啟動類中添加?@ServletComponentScan 注解
  • 掃描WebFilter注解,讓該注解生效
package com.it.heima.springboot06filter;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;@SpringBootApplication
@ServletComponentScan("com.it.heima.springboot06filter.filter")
public class Springboot06FilterApplication {public static void main(String[] args) {SpringApplication.run(Springboot06FilterApplication.class, args);}}

測試結果

package com.it.heima.springboot06filter.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("user")
public class UserController {@RequestMapping("test")public String test(){System.out.println("正在執行test方法");return "test";}
}


二,創建過濾器配置類,注冊過濾器
1 創建過濾器類(不添加WebFilter注解)
package com.it.heima.springboot06filter.filter;import jakarta.servlet.*;import java.io.IOException;public class UserFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("正在初始化~~~~~~");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("是否滿足條件");System.out.println("如滿足條件放行~~~~~~~~");filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {System.out.println("正在銷毀~~~~~~");}
}
2創建配置類, 注冊過濾器類
package com.it.heima.springboot06filter.config;import com.it.heima.springboot06filter.filter.UserFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class FilterConfig implements WebMvcConfigurer {@Beanpublic FilterRegistrationBean filterRegistrationBean(){// 創建過濾器注冊對象FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();// 把過濾器注入到過濾器注冊對象中filterRegistrationBean.setFilter(new UserFilter());// 設置過濾器攔截的請求filterRegistrationBean.addUrlPatterns("/*");return filterRegistrationBean;}
}

測試結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78479.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

匯編常用語法

GNU匯編語句: [lable:] instruction [comment] lable 表示標號,表示地址位置,可選. instruction即指令,也就是匯編指令或偽指令。 comment 就是注釋內容。 用戶使用.section 偽操作來定義一個段,匯編系統預定義了一些…

terraform resource創建了5臺阿里云ecs,如要使用terraform刪除其中一臺主機,如何刪除?

在 Terraform 中刪除阿里云 5 臺 ECS 實例中的某一臺,具體操作取決于你創建資源時使用的 多實例管理方式(count 或 for_each)。以下是詳細解決方案: 方法一:使用 for_each(推薦) 如果創建時使…

pycharm terminal 窗口打不開了

參考添加鏈接描述powershell.exe改為cmd.exe發現有一個小正方形,最大化可以看見了。

百度「心響」:左手“多智能體”右手“保姆級服務”,C端用戶能看懂這技術告白嗎?

——當技術名詞撞上“傻瓜式”需求,誰是贏家? 「多智能體」是什么?用戶:不重要,能一鍵搞定就行 百度最新推出的多智能體平臺“心響”,號稱能用自然語言交互一鍵托管復雜任務。 從旅游攻略到法律咨詢&#x…

57認知干貨:AI機器人產業

機器人本質上由可移動的方式和可交互萬物的機構組成,即適應不同環境下不同場景的情況,機器人能夠做到根據需求調整交互機構和移動方式。因此,隨著人工智能技術的發展,AI機器人的產業也將在未來逐步從單一任務的執行者,發展為能夠完成復雜多樣任務的智能體。 在未來的社會…

在兩個bean之間進行數據傳遞的解決方案

簡介 在日常開發中,在兩個bean之間進行數據傳遞是常見的操作,例如在日常開發中,將數據從VO類轉移到DO類等。在兩個bean之間進行數據傳遞,最常見的解決方案,就是手動復制,但是它比較繁瑣,充斥著…

基于開閉原則優化數據庫查詢語句拼接方法

背景 在開發實踐中,曾有同事在實現新功能時,因直接修改一段數據庫查詢條件拼接方法的代碼邏輯,導致生產環境出現故障。 具體來看,該方法通過在函數內部直接編寫條件判斷語句實現查詢拼接,盡管從面向對象設計的開閉原…

QT開發工具對比:Qt Creator、Qt Designer、Qt Design Studio

前端開發工具—Qt Designer Qt Designer是Qt框架的一部分,是一個圖形用戶界面設計工具。它允許開發者通過可視化方式設計和布局GUI組件,而無需手動編寫UI代碼。設計完成后,Qt Designer生成UI文件(通常以.ui為擴展名)&…

0基礎 | STM32 | TB6612電機驅動使用

TB6612介紹及使用 單片機通過驅動板連接至電機 原因:單品機I/O口輸出電流I小 驅動板:從外部引入高電壓,控制電機驅動 電源部分 VM:電機驅動電源輸入,輸入電壓范圍建議為3.7~12V GND:邏輯電…

【操作系統】死鎖

1. 定義 死鎖是指兩個或多個進程(或線程)在執行過程中,因爭奪資源而造成的一種僵局,每個進程都無限期地等待其他進程釋放它們所持有的資源。在這種情況下,沒有任何進程能夠繼續執行,除非有外部干預。 2. …

C++入門?關于類的一些特殊知識點

涉及的關于類中的默認成員函數的知識點可以看我的這篇博客哦~ C入門必須知道的知識?類的默認成員函數,一文講透運用 目錄 初始化列表 類型轉換 static成員 友元 內部類 匿名對象 對象拷貝時的一些編譯器的優化 初始化列表 我們知道類中的構造函數的任務是完…

只用Prettier進行格式化項目

1.下載Prettier插件,禁用ESlint 2.在項目根目錄新建.prettierrc文件 {"singleQuote": true,"jsxSingleQuote": true,"printWidth": 100,"trailingComma": "none","tabWidth": 2,"semi": f…

XXL-TOOL v1.4.0 發布 | Java工具類庫

Release Notes 1、【新增】JsonRpc模塊:一個輕量級、跨語言遠程過程調用實現,基于json、http實現(從XXL-JOB底層通訊組件提煉抽象)。2、【新增】Concurrent模塊:一系列并發編程工具,具備良好的線程安全、高…

基于LVGL的登錄界面設計

目錄 一、演示 二、前言 三、部件知識 3.1 圖片按鈕部件 3.1.1 圖片按鈕部件的組成 3.1.2 圖片的來源 3.1.3 添加/清除的狀態 3.1.4 圖片按鈕部件 API 函數 3.2 鍵盤部件(lv_keyboard) 3.2.1 鍵盤部件的組成 3.2.2 鍵盤部件的相關知識 3.2.2.1 鍵盤部件模式 3.…

S3 跨賬戶復制:增強云中的災難恢復計劃

您準備好提升您的云和 DevOps 技能了嗎? 🐥《云原生devops》專門為您打造,我們精心打造的 30 篇文章庫,這些文章涵蓋了 Azure、AWS 和 DevOps 方法論的眾多重要主題。無論您是希望精進專業知識的資深專業人士,還是渴望…

線程與進程深度解析:從fork行為到生產者-消費者模型

線程與進程深度解析:從fork行為到生產者-消費者模型 一、多線程環境下的fork行為與線程安全 1. 多線程程序中fork的特殊性 核心問題:fork后子進程的線程模型 當多線程程序中的某個線程調用fork時: 子進程僅包含調用fork的線程&#xff1…

Circular Plot系列(五): circle plot展示單細胞互作

這是我們circle系列的最后一節,我想常見的弦圖是繞不開的,所以最后從前面介紹的circle plot思路,做一遍弦圖。其實前面的內容如果消化了,plot互作弦圖也就不成什么問題了。 效果如下: #cellchat提取互作結果&#xff…

(11)Vue-Router路由的詳細使用

本系列教程目錄:Vue3Element Plus全套學習筆記-目錄大綱 文章目錄 第2章 路由 Vue-Router2.1 Vue路由快速入門2.1.1 創建項目2.1.2 路由運行流程 2.2 傳遞參數-useRoute2.2.1 路徑參數-params1)普通傳參2)傳遞多個參數3)對象方式傳…

react + antd 實現后臺管理系統

文章目錄 完整路由搭建Layout 和 Aside組件引入 AntdAside組件實現 項目效果圖 項目完整代碼地址 https://gitee.com/lyh1999/react-back-management 項目完整代碼地址 react依賴安裝 最好采用yarn 安裝 react-router 安裝依賴 配置路由 history模式 / // src/router/…

基于AWS Marketplace的快速解決方案:從選型到部署實戰

1. 引言:為什么選擇AWS Marketplace? 在數字化轉型的背景下,企業需要快速獲取成熟的軟件工具和服務以降低開發成本。AWS Marketplace 作為亞馬遜云科技的官方應用商店,提供超過萬款預配置的第三方和AWS原生解決方案,涵…