国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot web開(kāi)發(fā)登錄攔截器

這篇具有很好參考價(jià)值的文章主要介紹了springboot web開(kāi)發(fā)登錄攔截器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在SpringBoot中我們可以使用HandlerInterceptorAdapter這個(gè)適配器來(lái)實(shí)現(xiàn)自己的攔截器。這樣就可以攔截所有的請(qǐng)求并做相應(yīng)的處理。

應(yīng)用場(chǎng)景

  • 日志記錄,可以記錄請(qǐng)求信息的日志,以便進(jìn)行信息監(jiān)控、信息統(tǒng)計(jì)等。
  • 權(quán)限檢查:如登陸檢測(cè),進(jìn)入處理器檢測(cè)是否登陸,如果沒(méi)有直接返回到登陸頁(yè)面。
  • 性能監(jiān)控:典型的是慢日志。

在HandlerInterceptorAdapter中主要提供了以下的方法:

  • preHandle:在方法被調(diào)用前執(zhí)行。在該方法中可以做類似校驗(yàn)的功能。如果返回true,則繼續(xù)調(diào)用下一個(gè)攔截器。如果返回false,則中斷執(zhí)行,也就是說(shuō)我們想調(diào)用的方法 不會(huì)被執(zhí)行,但是你可以修改response為你想要的響應(yīng)。
  • postHandle:在方法執(zhí)行后調(diào)用。
  • afterCompletion:在整個(gè)請(qǐng)求處理完畢后進(jìn)行回調(diào),也就是說(shuō)視圖渲染完畢或者調(diào)用方已經(jīng)拿到響應(yīng)。

HandlerInterceptor

public interface HandlerInterceptor {
    default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return true;
    }

    default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
    }

    default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
    }
}

AsyncHandlerInterceptor

public interface AsyncHandlerInterceptor extends HandlerInterceptor {
    default void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    }
}

abstract class HandlerInterceptorAdapter

public abstract class HandlerInterceptorAdapter implements AsyncHandlerInterceptor {
    public HandlerInterceptorAdapter() {
    }

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return true;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
    }

    public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    }
}

看到這3個(gè)類和接口關(guān)系我們就明白了集成 HandlerInterceptorAdapter 只是為了能讓我們只重寫自己需要的方法即可,如果我們需要全部重寫,也可以直接實(shí)現(xiàn)接口

運(yùn)行流程總結(jié)如下:

  • 攔截器執(zhí)行順序是按照Spring配置文件中定義的順序而定的。
  • 會(huì)先按照順序執(zhí)行所有攔截器的preHandle方法,一直遇到return false為止,比如第二個(gè)preHandle方法是return false,則第三個(gè)以及以后所有攔截器都不會(huì)執(zhí)行。若都是return true,則按順序加載完preHandle方法。
  • 然后執(zhí)行主方法(自己的controller接口),若中間拋出異常,則跟return false效果一致,不會(huì)繼續(xù)執(zhí)行postHandle,只會(huì)倒序執(zhí)行afterCompletion方法。
  • 在主方法執(zhí)行完業(yè)務(wù)邏輯(頁(yè)面還未渲染數(shù)據(jù))時(shí),按倒序執(zhí)行postHandle方法。若第三個(gè)攔截器的preHandle方法return false,則會(huì)執(zhí)行第二個(gè)和第一個(gè)的postHandle方法和afterCompletion(postHandle都執(zhí)行完才會(huì)執(zhí)行這個(gè),也就是頁(yè)面渲染完數(shù)據(jù)后,執(zhí)行after進(jìn)行清理工作)方法。(postHandle和afterCompletion都是倒序執(zhí)行)

編寫攔截器

public class LoginInterceptor extends HandlerInterceptorAdapter {
    Logger logger = LoggerFactory.getLogger(getClass());
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("==============LoginInterceptor========preHandle==========");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
        System.out.println("==============LoginInterceptor======postHandle============");
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
        System.out.println("==============LoginInterceptor=======afterCompletion===========");
    }
    @Override
    public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("==============LoginInterceptor========afterConcurrentHandlingStarted==========");
    }

}

public class LoginInterceptor2 extends HandlerInterceptorAdapter {
    Logger logger = LoggerFactory.getLogger(getClass());
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("==============LoginInterceptor2========preHandle==========");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
        System.out.println("==============LoginInterceptor2======postHandle============");
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
        System.out.println("==============LoginInterceptor2=======afterCompletion===========");
    }
    @Override
    public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("==============LoginInterceptor2========afterConcurrentHandlingStarted==========");
    }

}

WebMvcConfigurerAdapter 抽象類是對(duì)WebMvcConfigurer接口的簡(jiǎn)單抽象(增加了一些默認(rèn)實(shí)現(xiàn)),但在在SpringBoot2.0及Spring5.0中WebMvcConfigurerAdapter已被廢棄 。官方推薦直接實(shí)現(xiàn)WebMvcConfigurer或者直接繼承WebMvcConfigurationSupport

實(shí)現(xiàn)WebMvcConfigurer配置攔截器

@Configuration
public class SpringMVCConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor());
        registry.addInterceptor(new LoginInterceptor2());
    }
}

springboot web開(kāi)發(fā)登錄攔截器,# SpringBoot,spring boot,前端,java

自行驗(yàn)證上面"運(yùn)行流程總結(jié)"吧 不過(guò)多的贅述了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-690810.html

到了這里,關(guān)于springboot web開(kāi)發(fā)登錄攔截器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • springboot實(shí)現(xiàn)攔截器

    內(nèi)容:繼承 HandlerInterceptorAdapter 并實(shí)現(xiàn) WebMvcConfigurer , 攔截器中的方法將preHandle-Controller-postHandle-affterCompletion的順序執(zhí)行。 注意:只有preHandle方法返回true時(shí)后面的方法才會(huì)執(zhí)行。當(dāng)攔截器鏈存在多個(gè)攔截器時(shí),postHandle在所有攔截器內(nèi)的所有攔截器返回成功時(shí)才會(huì)調(diào)用,而

    2024年02月02日
    瀏覽(15)
  • 【SpringBoot篇】Interceptor攔截器 | 攔截器和過(guò)濾器的區(qū)別

    【SpringBoot篇】Interceptor攔截器 | 攔截器和過(guò)濾器的區(qū)別

    攔截器(Interceptor)是一種軟件設(shè)計(jì)模式,用于在應(yīng)用程序處理請(qǐng)求或響應(yīng)時(shí)對(duì)其進(jìn)行攔截和修改。攔截器可以在整個(gè)應(yīng)用程序中使用,用于執(zhí)行跨越多個(gè)層的通用任務(wù),如身份驗(yàn)證、授權(quán)、緩存、日志記錄、性能計(jì)量等。 在Web開(kāi)發(fā)中,攔截器通常用于在請(qǐng)求到達(dá)控制器之前

    2024年02月04日
    瀏覽(28)
  • Spring/SpringBoot 攔截器

    Spring/SpringBoot 攔截器 攔截器的作用: 攔截器,可以進(jìn)行請(qǐng)求過(guò)濾、權(quán)限管理、打印日志、數(shù)據(jù)校驗(yàn)等。 攔截器,可以在請(qǐng)求前、請(qǐng)求后進(jìn)行處理。 代碼示例: 攔截器 MyInterceptor: Spring的攔截器,需要實(shí)現(xiàn) HandlerInterceptor 接口。 配置攔截器: 配置攔截器,需要實(shí)現(xiàn) WebMvcConf

    2024年02月19日
    瀏覽(22)
  • springboot 攔截器的配置

    編寫攔截器 對(duì)于前后端分離架構(gòu) preHandle 會(huì)在方法執(zhí)行前執(zhí)行,按照攔截器順序執(zhí)行 postHandle 會(huì)在方法return前執(zhí)行,按照攔截器順序逆序執(zhí)行 afterCompletion 方法return 之后執(zhí)行 ,按照攔截器順序逆序執(zhí)行 攔截器注冊(cè)

    2024年02月15日
    瀏覽(48)
  • Springboot中創(chuàng)建攔截器

    Springboot中創(chuàng)建攔截器

    目錄 目的 實(shí)現(xiàn)過(guò)程 ????????1、創(chuàng)建攔截器 ????????2、注冊(cè)攔截器 完整代碼 ? ? ? ? 在Springboot項(xiàng)目中創(chuàng)建攔截器,在進(jìn)入Controller層之前攔截請(qǐng)求,可對(duì)攔截到的請(qǐng)求內(nèi)容做響應(yīng)處理,如:校驗(yàn)請(qǐng)求參數(shù)、驗(yàn)證證書(shū)等操作; ????????首先自定義創(chuàng)建一個(gè)類,然后

    2024年02月13日
    瀏覽(25)
  • Springboot如何配置攔截器

    在 Spring Boot 中,配置攔截器需要繼承 HandlerInterceptorAdapter 類,并重寫其中的 preHandle()、postHandle()、afterCompletion() 等方法。下面是一個(gè)詳細(xì)的實(shí)例: 首先,我們創(chuàng)建一個(gè)攔截器類 MyInterceptor,繼承 HandlerInterceptorAdapter 類,并在其中重寫 preHandle() 方法: 其中,preHandle() 方法用于

    2024年02月13日
    瀏覽(16)
  • 全面了解SpringBoot攔截器

    全面了解SpringBoot攔截器

    在本文中,我們將詳細(xì)介紹SpringBoot中的攔截器,包括攔截器的概念、作用、實(shí)現(xiàn)方式、執(zhí)行順序、生命周期以及高級(jí)應(yīng)用。最后,我們還將探討攔截器的性能優(yōu)化策略和常見(jiàn)問(wèn)題。 攔截器(Interceptor)是一種特殊的組件,它可以在請(qǐng)求處理的過(guò)程中對(duì)請(qǐng)求和響應(yīng)進(jìn)行攔截和處

    2024年02月17日
    瀏覽(14)
  • SpringBoot統(tǒng)一功能處理(攔截器)

    SpringBoot統(tǒng)一功能處理(攔截器)

    1.1自定義攔截器 寫一個(gè)類去實(shí)現(xiàn) HandlerInterceptor接口 表示當(dāng)前類是一個(gè)攔截器,再 重寫HandlerInterceptor接口中的方法 , preHandle 為在方法 執(zhí)行前攔截 ,postHandle為方法執(zhí)行中攔截,afterCompletion為方法執(zhí)行中攔截.需要在什么時(shí)候攔截就重寫什么方法 2.1.配置攔截規(guī)則 實(shí)現(xiàn) WebMvcConfigur

    2024年02月14日
    瀏覽(17)
  • SpringBoot(八)攔截器Interceptor

    SpringBoot(八)攔截器Interceptor

    ? ? 上篇介紹了Filter過(guò)濾器的使用,提起過(guò)濾器,就不得不再提起另外一個(gè)叫做攔截器的東西。兩者的作用類似,都可以實(shí)現(xiàn)攔截請(qǐng)求的作用,但其實(shí)兩者有著非常大的區(qū)別。本篇,我們就來(lái)學(xué)習(xí)下攔截器的使用。 ? ? 如果你是新手,且沒(méi)看過(guò)我之前的一系列SpringBoot文章,

    2024年02月17日
    瀏覽(23)
  • Springboot中自定義攔截器

    Spring Boot 中使用攔截器 參考:https://blog.csdn.net/taojin12/article/details/88342576?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170823498416800197050192%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257Drequest_id=170823498416800197050192biz_id=0utm_medium=distribute.pc_search_result.none-task-blog-2 all top_positive~defa

    2024年02月19日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包