亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文教你搞懂SpringBoot自定義攔截器的思路

 更新時間:2023年08月03日 08:29:28   作者:DaenCode  
在開發(fā)中,都離不開攔截器的使用,比如說在開發(fā)登錄功能時,實現(xiàn)權(quán)限管理功能時等,這篇文章主要帶大家使用SpringBoot梳理自定義攔截器的思路,需要的可以參考一下

思維導圖

前言

在開發(fā)中,都離不開攔截器的使用。比如說在開發(fā)登錄功能時,采用JWT登錄時通過對token進行驗證實現(xiàn)登錄攔截的功能;實現(xiàn)權(quán)限管理功能時,通過對角色權(quán)限的攔截實現(xiàn)權(quán)限功能。下面帶你使用SpringBoot梳理自定義攔截器的思路。

前置知識

@Configuration:用于標識一個全局配置類。注冊到spring容器中,相當于xml配置時的beans標簽。@Bean:用于標識全局配置類中的自定義攔截方法上,進行攔截對象的創(chuàng)建,方便后續(xù)注冊。

具體實現(xiàn)步驟

定義攔截器類

自定義攔截器類:負責定義攔截的處理邏輯,包含前置攔截、后置攔截和最終攔截。以下是對其API的介紹。

API介紹

在方法參數(shù)中,HttpServletRequest代表客戶端的請求,HttpServletResponse代表返回給客戶端的響應。Object handler是目標處理器(如控制器方法)的實例,ModelAndView用于傳遞模型數(shù)據(jù)和視圖名稱。

方法名方法簽名作用
preHandleboolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception在目標處理器執(zhí)行之前被調(diào)用??梢赃M行一些前置處理邏輯,如權(quán)限驗證、日志記錄等。返回值決定請求是否繼續(xù)執(zhí)行后續(xù)流程,true表示繼續(xù)執(zhí)行,false表示中斷請求處理
postHandlevoid postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception目標處理器執(zhí)行之后、視圖渲染之前被調(diào)用??梢詫憫Y(jié)果進行一些后置處理,如添加公共數(shù)據(jù)、修改視圖等。此時可以對目標處理器的執(zhí)行結(jié)果進行修改
afterCompletionvoid afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception整個請求處理完畢后被調(diào)用??梢赃M行一些清理工作,如資源釋放、日志記錄等。無法改變響應結(jié)果

思路

  • 創(chuàng)建攔截器類TestInterceptor并實現(xiàn)HandlerInterceptor。
  • 根據(jù)其對應的API結(jié)合業(yè)務,在對應方法上實現(xiàn)相應的處理邏輯。
public class TestInterceptor implements HandlerInterceptor {
    //前置處理器。進入到Controller層方法之前執(zhí)行
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //TODO 前置攔截的處理邏輯
        //1.判斷用戶是否登錄,登錄返回true
        return HandlerInterceptor.super.preHandle(request, response, handler);
    }
    //后置處理器。視圖渲染之前執(zhí)行的方法,對響應結(jié)果進行處理。
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //TODO 后置攔截的處理邏輯
        //添加某些數(shù)據(jù)等等
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }
    //最終處理器。整個請求完成之后執(zhí)行。
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // TODO 最終攔截處理器
        //1.記錄日志
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

定義攔截器配置類

攔截器配置類:負責注冊相應的攔截器。

思路

  • 創(chuàng)建攔截器配置類。并用@Configuration標識、實現(xiàn)WebMvcConfigurer接口。
  • 創(chuàng)建生成攔截器對象的方法。并用@Bean標識。方便攔截器的注冊。
  • 實現(xiàn)addInterceptors方法,進行攔截器的注冊。
@Configuration
public class TestInterceptorConfig implements WebMvcConfigurer {
    @Bean
    public TestInterceptor testInterceptor(){
        return new TestInterceptor();
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(testInterceptor()).addPathPatterns("/test/**");
        WebMvcConfigurer.super.addInterceptors(registry);
    }
}

攔截器失效

如果發(fā)生攔截器沒有生效,可以按照以下思路進行檢查:

攔截器配置類是否添加@Configuration。攔截的是接口地址,地址末尾則為/**格式。攔截的是目錄地址,地址則為/*/格式。 ??寫在最后

到此這篇關于一文教你搞懂SpringBoot自定義攔截器的思路的文章就介紹到這了,更多相關SpringBoot自定義攔截器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring實戰(zhàn)之抽象Bean和子Bean定義與用法示例

    Spring實戰(zhàn)之抽象Bean和子Bean定義與用法示例

    這篇文章主要介紹了Spring實戰(zhàn)之抽象Bean和子Bean定義與用法,結(jié)合實例形式分析了Spring抽象Bean和子Bean相關配置、定義與使用操作技巧,需要的朋友可以參考下
    2019-11-11
  • JAVA實現(xiàn)賬戶取款和存款操作

    JAVA實現(xiàn)賬戶取款和存款操作

    這篇文章主要介紹了JAVA實現(xiàn)賬戶取款和存款操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • 基于java集合中的一些易混淆的知識點(詳解)

    基于java集合中的一些易混淆的知識點(詳解)

    下面小編就為大家?guī)硪黄趈ava集合中的一些易混淆的知識點(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Java中接收鍵盤輸入的三種方法

    Java中接收鍵盤輸入的三種方法

    這篇文章主要介紹了Java中接收鍵盤輸入的三種方法,本文給出3個方法實現(xiàn)通過讀取控制臺的輸入與用戶實現(xiàn)交互,需要的朋友可以參考下
    2015-06-06
  • Java中4種經(jīng)典限流算法講解

    Java中4種經(jīng)典限流算法講解

    本文主要介紹了Java中4種經(jīng)典限流算法講解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • java實習--每天打卡十道面試題!

    java實習--每天打卡十道面試題!

    臨近秋招,備戰(zhàn)暑期實習,祝大家每天進步億點點!本篇文章準備了十道java的常用面試題,希望能夠給大家提供幫助,最后祝大家面試成功,進入自己心儀的大廠
    2021-06-06
  • SpringBoot整合MyBatisPlus配置動態(tài)數(shù)據(jù)源的方法

    SpringBoot整合MyBatisPlus配置動態(tài)數(shù)據(jù)源的方法

    這篇文章主要介紹了SpringBoot整合MyBatisPlus配置動態(tài)數(shù)據(jù)源的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-05-05
  • Java詳解HashMap實現(xiàn)原理和源碼分析

    Java詳解HashMap實現(xiàn)原理和源碼分析

    這篇文章主要介紹了Java關于HashMap的實現(xiàn)原理并進行源碼分析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • 詳解spring cloud分布式關于熔斷器

    詳解spring cloud分布式關于熔斷器

    這篇文章主要介紹了詳解spring cloud分布式關于熔斷器,詳細的介紹了什么是熔斷器和使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • SpringCloud修改Feign日志記錄級別過程淺析

    SpringCloud修改Feign日志記錄級別過程淺析

    OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡通信的細節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡通信細節(jié)。所有遠程調(diào)用,都像調(diào)用本地方法一樣完成
    2023-02-02

最新評論