最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

思維導(dǎo)圖

前言

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

前置知識(shí)

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

具體實(shí)現(xiàn)步驟

定義攔截器類

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

API介紹

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

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

思路

  • 創(chuàng)建攔截器類TestInterceptor并實(shí)現(xiàn)HandlerInterceptor。
  • 根據(jù)其對(duì)應(yīng)的API結(jié)合業(yè)務(wù),在對(duì)應(yīng)方法上實(shí)現(xiàn)相應(yīng)的處理邏輯。
public class TestInterceptor implements HandlerInterceptor {
    //前置處理器。進(jìn)入到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í)行的方法,對(duì)響應(yīng)結(jié)果進(jìn)行處理。
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //TODO 后置攔截的處理邏輯
        //添加某些數(shù)據(jù)等等
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }
    //最終處理器。整個(gè)請(qǐng)求完成之后執(zhí)行。
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // TODO 最終攔截處理器
        //1.記錄日志
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

定義攔截器配置類

攔截器配置類:負(fù)責(zé)注冊(cè)相應(yīng)的攔截器。

思路

  • 創(chuàng)建攔截器配置類。并用@Configuration標(biāo)識(shí)、實(shí)現(xiàn)WebMvcConfigurer接口。
  • 創(chuàng)建生成攔截器對(duì)象的方法。并用@Bean標(biāo)識(shí)。方便攔截器的注冊(cè)。
  • 實(shí)現(xiàn)addInterceptors方法,進(jìn)行攔截器的注冊(cè)。
@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ā)生攔截器沒有生效,可以按照以下思路進(jìn)行檢查:

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

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

相關(guān)文章

  • maven 在執(zhí)行package,install,deploy時(shí)使用clean與不使用clean的不同之處

    maven 在執(zhí)行package,install,deploy時(shí)使用clean與不使用clean的不同之處

    有時(shí)候用mvn install后,新改的內(nèi)容不生效,一定要后來使用mvn clean install 才生效,由于之前沒有做記錄,以及記不清是什么情況下才會(huì)出現(xiàn)的問題,于是想看看clean和不clean的區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • Spring中的@EnableConfigurationProperties使用方式以及作用詳解

    Spring中的@EnableConfigurationProperties使用方式以及作用詳解

    這篇文章主要介紹了Spring中的@EnableConfigurationProperties使用方式以及作用詳解,使用了?@ConfigurationProperties?注解的配置類生效,將該類注入到?IOC?容器中,交由?IOC?容器進(jìn)行管理,此時(shí)則不用再配置類上加上@Component,需要的朋友可以參考下
    2024-01-01
  • java開發(fā)之鬧鐘的實(shí)現(xiàn)代碼

    java開發(fā)之鬧鐘的實(shí)現(xiàn)代碼

    本篇文章介紹了,在java中鬧鐘的實(shí)現(xiàn)代碼。需要的朋友參考下
    2013-05-05
  • Java并發(fā)機(jī)制的底層實(shí)現(xiàn)原理分析

    Java并發(fā)機(jī)制的底層實(shí)現(xiàn)原理分析

    本文主要介紹了Java中并發(fā)編程中常用的一些機(jī)制,包括volatile、synchronized和原子操作,volatile是輕量級(jí)的同步機(jī)制,保證了共享變量的可見性;synchronized是一種重量級(jí)的同步機(jī)制,通過加鎖和解鎖來保證線程安全
    2025-01-01
  • Java設(shè)計(jì)模式之Adapter適配器模式

    Java設(shè)計(jì)模式之Adapter適配器模式

    這篇文章主要為大家詳細(xì)介紹了Java設(shè)計(jì)模式之Adapter適配器模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Springboot中LocalDateTime對(duì)象返回給前端格式化解決方案

    Springboot中LocalDateTime對(duì)象返回給前端格式化解決方案

    在項(xiàng)目開發(fā)當(dāng)中前后端使用什么樣的時(shí)間格式,是一個(gè)值得關(guān)注的問題,這篇文章主要給大家介紹了關(guān)于Springboot中LocalDateTime對(duì)象返回給前端格式化的解決方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Java定時(shí)任務(wù)的三種實(shí)現(xiàn)方法

    Java定時(shí)任務(wù)的三種實(shí)現(xiàn)方法

    在應(yīng)用里經(jīng)常都有用到在后臺(tái)跑定時(shí)任務(wù)的需求。舉個(gè)例子,比如需要在服務(wù)后臺(tái)跑一個(gè)定時(shí)任務(wù)來進(jìn)行垃圾回收
    2014-04-04
  • Java中關(guān)于OAuth2.0的原理分析

    Java中關(guān)于OAuth2.0的原理分析

    這篇文章主要介紹了Java中關(guān)于OAuth2.0的原理分析,OAuth是一個(gè)關(guān)于授權(quán)的開放網(wǎng)絡(luò)標(biāo)準(zhǔn),允許用戶授權(quán)第三 方應(yīng)用訪問他們存儲(chǔ)在另外的服務(wù)提供者上的信息,而不需要將用戶名和密碼提供給第三方移動(dòng)應(yīng)用或分享他們數(shù)據(jù)的所有內(nèi)容,需要的朋友可以參考下
    2023-09-09
  • Java中的注解與注解處理器

    Java中的注解與注解處理器

    這篇文章主要介紹了Java中的注解與注解處理器,元注解的作用是負(fù)責(zé)注解其他注解, Java5.0定義了4個(gè)標(biāo)準(zhǔn)的meta-annotation(元注解)類型,它們被用來提供對(duì)其它注解類型進(jìn)行說明,需要的朋友可以參考下
    2023-11-11
  • 微信公眾號(hào)獲取access_token的方法實(shí)例分析

    微信公眾號(hào)獲取access_token的方法實(shí)例分析

    這篇文章主要介紹了微信公眾號(hào)獲取access_token的方法,結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)微信公眾號(hào)獲取access_token的相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-10-10

最新評(píng)論

霍州市| 乌拉特后旗| 措勤县| 沅江市| 长乐市| 东至县| 潼关县| 衡东县| 星座| 黔南| 临桂县| 台南市| 辽宁省| 沧州市| 博兴县| 方山县| 天等县| 永善县| 比如县| 斗六市| 花莲市| 鹤山市| 盘锦市| 太和县| 湖州市| 临安市| 宾川县| 巴青县| 长宁区| 阿坝县| 北海市| 郸城县| 芜湖市| 淮滨县| 庆城县| 弥勒县| 垫江县| 修水县| 龙江县| 略阳县| 雅安市|